obsidian-typings 5.18.0 → 5.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1203,7 +1203,7 @@ var import_obsidian87 = require("obsidian");
1203
1203
 
1204
1204
  // src/obsidian/implementations/utils/PathUtils.ts
1205
1205
  function parentFolderPath(path) {
1206
- return path.replace(/\/?[^\/]*$/, "") || "/";
1206
+ return path.replace(/\/?[^/]*$/, "") || "/";
1207
1207
  }
1208
1208
 
1209
1209
  // src/obsidian/implementations/functions/createTFolderInstance.ts
@@ -1273,4 +1273,4 @@ function isFrontmatterLinkCache(reference) {
1273
1273
  function isLinkCache(reference) {
1274
1274
  return isReferenceCache(reference) && reference.original[0] !== "!";
1275
1275
  }
1276
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9pbmRleC50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NsYXNzZXMvQ3VzdG9tQXJyYXlEaWN0SW1wbC50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0YW50cy9GaWxlRXh0ZW5zaW9uLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RhbnRzL0ludGVybmFsUGx1Z2luTmFtZS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0YW50cy9WaWV3VHlwZS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2Jhc2VzL2dldEJhc2VzRW50cnlDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2Jhc2VzL2dldEJhc2VzRW50cnlHcm91cENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvYmFzZXMvZ2V0QmFzZXNRdWVyeVJlc3VsdENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvYmFzZXMvZ2V0QmFzZXNWaWV3Q29uZmlnQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9iYXNlcy9nZXRRdWVyeUNvbnRyb2xsZXJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0QWJzdHJhY3RUZXh0Q29tcG9uZW50Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9jb21wb25lbnRzL2dldEJhc2VDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0QnV0dG9uQ29tcG9uZW50Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9jb21wb25lbnRzL2dldENvbG9yQ29tcG9uZW50Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9jb21wb25lbnRzL2dldENvbXBvbmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvY29tcG9uZW50cy9nZXREcm9wZG93bkNvbXBvbmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvY29tcG9uZW50cy9nZXRFeHRyYUJ1dHRvbkNvbXBvbmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvY29tcG9uZW50cy9nZXRNb21lbnRGb3JtYXRDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0UHJvZ3Jlc3NCYXJDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0U2VhcmNoQ29tcG9uZW50Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9jb21wb25lbnRzL2dldFNlY3JldENvbXBvbmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvY29tcG9uZW50cy9nZXRTbGlkZXJDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0VGV4dEFyZWFDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0VGV4dENvbXBvbmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvY29tcG9uZW50cy9nZXRUb2dnbGVDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0VmFsdWVDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEFwcENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0Q2FwYWNpdG9yQWRhcHRlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0RWRpdG9yQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRFdmVudHNDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEZpbGVNYW5hZ2VyQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRGaWxlU3lzdGVtQWRhcHRlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0RnV6enlTdWdnZXN0TW9kYWxDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEhvdmVyUG9wb3ZlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0S2V5bWFwQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRNYXJrZG93blByZXZpZXdSZW5kZXJlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25QcmV2aWV3Vmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25SZW5kZXJDaGlsZENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25SZW5kZXJlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWVudUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWVudUl0ZW1Db25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1lbnVTZXBhcmF0b3JDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1ldGFkYXRhQ2FjaGVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1vZGFsQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXROb3RpY2VDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFJlbmRlckNvbnRleHRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFNjb3BlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTZWNyZXRTdG9yYWdlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTZXR0aW5nQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTZXR0aW5nR3JvdXBDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFNldHRpbmdUYWJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRBYnN0cmFjdEZpbGVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRhc2tzQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRURmlsZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VEZvbGRlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VmF1bHRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlQ29udGFpbmVyQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VGbG9hdGluZ0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlSXRlbUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlTGVhZkNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlTW9iaWxlRHJhd2VyQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VQYXJlbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZVJpYmJvbkNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlUm9vdENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlU2lkZWRvY2tDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZVNwbGl0Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VUYWJzQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VXaW5kb3dDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZhbHVlcy9nZXRCb29sZWFuVmFsdWVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZhbHVlcy9nZXREYXRlVmFsdWVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZhbHVlcy9nZXREdXJhdGlvblZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0RmlsZVZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0SFRNTFZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0SWNvblZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0SW1hZ2VWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldExpbmtWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldExpc3RWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldE5vdE51bGxWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldE51bGxWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldE51bWJlclZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0T2JqZWN0VmFsdWVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZhbHVlcy9nZXRSZWdFeHBWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldFJlbGF0aXZlRGF0ZVZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0U3RyaW5nVmFsdWVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZhbHVlcy9nZXRUYWdWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldFVybFZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0VmFsdWVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZpZXdzL2dldEVkaXRhYmxlRmlsZVZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZpZXdzL2dldE1hcmtkb3duVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRBcHBNZW51QmFyTWFuYWdlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRBcHBTZXR0aW5nQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldENsaUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRDb21tYW5kc0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRDdXN0b21DU1NDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0RHJhZ01hbmFnZXJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0RWRpdG9yU3VnZ2VzdHNDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0RW1iZWRSZWdpc3RyeUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRGb2xkTWFuYWdlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRGcmFtZURvbUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRIb3RrZXlNYW5hZ2VyQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldE1ldGFkYXRhVHlwZU1hbmFnZXJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0T2JzaWRpYW5ET01Db25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0UGx1Z2luc0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRSZWNlbnRGaWxlVHJhY2tlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRTaGFyZVJlY2VpdmVyQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldFN0YXR1c0JhckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRWaWV3UmVnaXN0cnlDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0V29ya3NwYWNlTGVhZkhpc3RvcnlDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9nZXRJbnRlcm5hbFBsdWdpbkNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL2dldEludGVybmFsUGx1Z2luc0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRBbGxQcm9wZXJ0aWVzVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRBdWRpb1ZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0QmFja2xpbmtWaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEJhc2VzVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRCb29rbWFya3NWaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldENhbnZhc1ZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0RW1wdHlWaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEZpbGVFeHBsb3JlclZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0RmlsZVByb3BlcnRpZXNWaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEdyYXBoVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRJbWFnZVZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0TG9jYWxHcmFwaFZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0T3V0Z29pbmdMaW5rVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRPdXRsaW5lVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRQZGZWaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldFJlbGVhc2VOb3Rlc1ZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0U2VhcmNoVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRTeW5jVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRUYWJsZVZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0VGFnVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRWaWRlb1ZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0V2Vidmlld2VySGlzdG9yeVZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0V2Vidmlld2VyVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvZnVuY3Rpb25zL2NyZWF0ZVRGaWxlSW5zdGFuY2UudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy91dGlscy9QYXRoVXRpbHMudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9mdW5jdGlvbnMvY3JlYXRlVEZvbGRlckluc3RhbmNlLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvZnVuY3Rpb25zL2dldERhdGFBZGFwdGVyRXgudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9mdW5jdGlvbnMvbG9hZE1lcm1haWQudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9mdW5jdGlvbnMvbG9hZFBkZkpzLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvZnVuY3Rpb25zL2xvYWRQcmlzbS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL3R5cGUtZ3VhcmRzL2lzUmVmZXJlbmNlQ2FjaGUudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy90eXBlLWd1YXJkcy9pc0VtYmVkQ2FjaGUudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy90eXBlLWd1YXJkcy9pc0Zyb250bWF0dGVyTGlua0NhY2hlLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvdHlwZS1ndWFyZHMvaXNMaW5rQ2FjaGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2NsYXNzZXMvQ3VzdG9tQXJyYXlEaWN0SW1wbC50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cy9GaWxlRXh0ZW5zaW9uLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RhbnRzL0ludGVybmFsUGx1Z2luTmFtZS50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2Jhc2VzL2dldEJhc2VzRW50cnlDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2Jhc2VzL2dldEJhc2VzRW50cnlHcm91cENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvYmFzZXMvZ2V0QmFzZXNRdWVyeVJlc3VsdENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvYmFzZXMvZ2V0QmFzZXNWaWV3Q29uZmlnQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9iYXNlcy9nZXRRdWVyeUNvbnRyb2xsZXJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0QWJzdHJhY3RUZXh0Q29tcG9uZW50Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9jb21wb25lbnRzL2dldEJhc2VDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0QnV0dG9uQ29tcG9uZW50Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9jb21wb25lbnRzL2dldENvbG9yQ29tcG9uZW50Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9jb21wb25lbnRzL2dldENvbXBvbmVudENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvY29tcG9uZW50cy9nZXREcm9wZG93bkNvbXBvbmVudENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvY29tcG9uZW50cy9nZXRFeHRyYUJ1dHRvbkNvbXBvbmVudENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvY29tcG9uZW50cy9nZXRNb21lbnRGb3JtYXRDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0UHJvZ3Jlc3NCYXJDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0U2VhcmNoQ29tcG9uZW50Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9jb21wb25lbnRzL2dldFNlY3JldENvbXBvbmVudENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvY29tcG9uZW50cy9nZXRTbGlkZXJDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0VGV4dEFyZWFDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0VGV4dENvbXBvbmVudENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvY29tcG9uZW50cy9nZXRUb2dnbGVDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0VmFsdWVDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEFwcENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0Q2FwYWNpdG9yQWRhcHRlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0RWRpdG9yQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRFdmVudHNDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEZpbGVNYW5hZ2VyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRGaWxlU3lzdGVtQWRhcHRlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0RnV6enlTdWdnZXN0TW9kYWxDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEhvdmVyUG9wb3ZlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0S2V5bWFwQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRNYXJrZG93blByZXZpZXdSZW5kZXJlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25QcmV2aWV3Vmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25SZW5kZXJDaGlsZENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25SZW5kZXJlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWVudUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWVudUl0ZW1Db25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1lbnVTZXBhcmF0b3JDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1ldGFkYXRhQ2FjaGVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1vZGFsQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXROb3RpY2VDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFJlbmRlckNvbnRleHRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFNjb3BlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTZWNyZXRTdG9yYWdlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTZXR0aW5nQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTZXR0aW5nR3JvdXBDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFNldHRpbmdUYWJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRBYnN0cmFjdEZpbGVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRhc2tzQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRURmlsZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VEZvbGRlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VmF1bHRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlQ29udGFpbmVyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VGbG9hdGluZ0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlSXRlbUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlTGVhZkNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlTW9iaWxlRHJhd2VyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VQYXJlbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZVJpYmJvbkNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlUm9vdENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlU2lkZWRvY2tDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZVNwbGl0Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VUYWJzQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VXaW5kb3dDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZhbHVlcy9nZXRCb29sZWFuVmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZhbHVlcy9nZXREYXRlVmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZhbHVlcy9nZXREdXJhdGlvblZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0RmlsZVZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0SFRNTFZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0SWNvblZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0SW1hZ2VWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldExpbmtWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldExpc3RWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldE5vdE51bGxWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldE51bGxWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldE51bWJlclZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0T2JqZWN0VmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZhbHVlcy9nZXRSZWdFeHBWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldFJlbGF0aXZlRGF0ZVZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0U3RyaW5nVmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZhbHVlcy9nZXRUYWdWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldFVybFZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0VmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZpZXdzL2dldEVkaXRhYmxlRmlsZVZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZpZXdzL2dldE1hcmtkb3duVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRBcHBNZW51QmFyTWFuYWdlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRBcHBTZXR0aW5nQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldENsaUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRDb21tYW5kc0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRDdXN0b21DU1NDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0RHJhZ01hbmFnZXJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0RWRpdG9yU3VnZ2VzdHNDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0RW1iZWRSZWdpc3RyeUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRGb2xkTWFuYWdlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRGcmFtZURvbUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRIb3RrZXlNYW5hZ2VyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldE1ldGFkYXRhVHlwZU1hbmFnZXJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0T2JzaWRpYW5ET01Db25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0UGx1Z2luc0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRSZWNlbnRGaWxlVHJhY2tlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRTaGFyZVJlY2VpdmVyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldFN0YXR1c0JhckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRWaWV3UmVnaXN0cnlDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0V29ya3NwYWNlTGVhZkhpc3RvcnlDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9nZXRJbnRlcm5hbFBsdWdpbkNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL2dldEludGVybmFsUGx1Z2luc0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRBbGxQcm9wZXJ0aWVzVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRBdWRpb1ZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0QmFja2xpbmtWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEJhc2VzVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRCb29rbWFya3NWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldENhbnZhc1ZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0RW1wdHlWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEZpbGVFeHBsb3JlclZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0RmlsZVByb3BlcnRpZXNWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEdyYXBoVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRJbWFnZVZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0TG9jYWxHcmFwaFZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0T3V0Z29pbmdMaW5rVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRPdXRsaW5lVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRQZGZWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldFJlbGVhc2VOb3Rlc1ZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0U2VhcmNoVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRTeW5jVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRUYWJsZVZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0VGFnVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRWaWRlb1ZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0V2Vidmlld2VySGlzdG9yeVZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0V2Vidmlld2VyVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vZnVuY3Rpb25zL2NyZWF0ZVRGaWxlSW5zdGFuY2UudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9mdW5jdGlvbnMvY3JlYXRlVEZvbGRlckluc3RhbmNlLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vZnVuY3Rpb25zL2dldERhdGFBZGFwdGVyRXgudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9mdW5jdGlvbnMvbG9hZE1lcm1haWQudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9mdW5jdGlvbnMvbG9hZFBkZkpzLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vZnVuY3Rpb25zL2xvYWRQcmlzbS50cyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGUtZ3VhcmRzL2lzRW1iZWRDYWNoZS50cyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGUtZ3VhcmRzL2lzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUudHMnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlLWd1YXJkcy9pc0xpbmtDYWNoZS50cyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGUtZ3VhcmRzL2lzUmVmZXJlbmNlQ2FjaGUudHMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9QYXRoVXRpbHMudHMnO1xuZXhwb3J0IHR5cGUgKiBmcm9tICcuLi8uLi9pbmRleC5kLnRzJztcbiIsICJpbXBvcnQgdHlwZSB7IEN1c3RvbUFycmF5RGljdCB9IGZyb20gJy4uLy4uL2ludGVybmFscy9jb2xsZWN0aW9ucy9DdXN0b21BcnJheURpY3QuZC5kLnRzJztcblxuLyoqXG4gKiBBIGRpY3Rpb25hcnkgdGhhdCBtYXBzIHN0cmluZyBrZXlzIHRvIGFycmF5cyBvZiB1bmlxdWUgdmFsdWVzLCBpbXBsZW1lbnRpbmcge0BsaW5rIEN1c3RvbUFycmF5RGljdH0uXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGNsYXNzIEN1c3RvbUFycmF5RGljdEltcGw8VD4gaW1wbGVtZW50cyBDdXN0b21BcnJheURpY3Q8VD4ge1xuICAvKiogSW50ZXJuYWwgbWFwIHN0b3Jpbmcga2V5LXRvLWFycmF5IG1hcHBpbmdzLiAqL1xuICBwdWJsaWMgZGF0YTogTWFwPHN0cmluZywgVFtdPiA9IG5ldyBNYXAoKTtcblxuICAvKipcbiAgICogQWRkIGEgdmFsdWUgdG8gdGhlIGFycmF5IGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4ga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleS5cbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGQoa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuZ2V0KGtleSk7XG4gICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgIHZhbHVlcyA9IFtdO1xuICAgICAgdGhpcy5kYXRhLnNldChrZXksIHZhbHVlcyk7XG4gICAgfVxuXG4gICAgaWYgKCF2YWx1ZXMuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbGwgdmFsdWVzIGZvciB0aGUgZ2l2ZW4ga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleSB0byBjbGVhci5cbiAgICovXG4gIHB1YmxpYyBjbGVhcihrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZGF0YS5kZWxldGUoa2V5KTtcbiAgfVxuXG4gIC8qKiBSZW1vdmUgYWxsIGtleXMgYW5kIHRoZWlyIHZhbHVlcy4gKi9cbiAgcHVibGljIGNsZWFyQWxsKCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YS5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgdGhlIGFycmF5IGZvciB0aGUgZ2l2ZW4ga2V5IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5LlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGV4aXN0cy5cbiAgICovXG4gIHB1YmxpYyBjb250YWlucyhrZXk6IHN0cmluZywgdmFsdWU6IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmdldChrZXkpPy5jb250YWlucyh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB0b3RhbCBudW1iZXIgb2YgdmFsdWVzIGFjcm9zcyBhbGwga2V5cy5cbiAgICpcbiAgICogQHJldHVybnMgVG90YWwgdmFsdWUgY291bnQuXG4gICAqL1xuICBwdWJsaWMgY291bnQoKTogbnVtYmVyIHtcbiAgICBsZXQgYW5zID0gMDtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLmtleXMoKSkge1xuICAgICAgYW5zICs9IHRoaXMuZ2V0KGtleSk/Lmxlbmd0aCA/PyAwO1xuICAgIH1cblxuICAgIHJldHVybiBhbnM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBhcnJheSBvZiB2YWx1ZXMgZm9yIHRoZSBnaXZlbiBrZXksIG9yIGBudWxsYCBpZiBub3QgZm91bmQuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5LlxuICAgKiBAcmV0dXJucyBBcnJheSBvZiB2YWx1ZXMsIG9yIGBudWxsYC5cbiAgICovXG4gIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcpOiBudWxsIHwgVFtdIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmdldChrZXkpIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBrZXlzIGluIHRoZSBkaWN0aW9uYXJ5LlxuICAgKlxuICAgKiBAcmV0dXJucyBBcnJheSBvZiBrZXlzLlxuICAgKi9cbiAgcHVibGljIGtleXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZGF0YS5rZXlzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIHNwZWNpZmljIHZhbHVlIGZyb20gdGhlIGFycmF5IGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4ga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleS5cbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICovXG4gIHB1YmxpYyByZW1vdmUoa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5nZXQoa2V5KTtcbiAgICBpZiAoIXZhbHVlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhbHVlcy5yZW1vdmUodmFsdWUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmNsZWFyKGtleSk7XG4gICAgfVxuICB9XG59XG4iLCAiLyoqXG4gKiBDb25zdGFudCBtYXBwaW5nIG9mIGZpbGUgZXh0ZW5zaW9uIGlkZW50aWZpZXJzIHJlY29nbml6ZWQgYW5kIHN1cHBvcnRlZCBieSBPYnNpZGlhbi5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgY29uc3QgRmlsZUV4dGVuc2lvbiA9IHtcbiAgXzNncDogJzNncCcsXG4gIGF2aWY6ICdhdmlmJyxcbiAgYm1wOiAnYm1wJyxcbiAgY2FudmFzOiAnY2FudmFzJyxcbiAgZmxhYzogJ2ZsYWMnLFxuICBnaWY6ICdnaWYnLFxuICBqcGVnOiAnanBlZycsXG4gIGpwZzogJ2pwZycsXG4gIG00YTogJ200YScsXG4gIG1kOiAnbWQnLFxuICBta3Y6ICdta3YnLFxuICBtb3Y6ICdtb3YnLFxuICBtcDM6ICdtcDMnLFxuICBtcDQ6ICdtcDQnLFxuICBvZ2E6ICdvZ2EnLFxuICBvZ2c6ICdvZ2cnLFxuICBvZ3Y6ICdvZ3YnLFxuICBvcHVzOiAnb3B1cycsXG4gIHBkZjogJ3BkZicsXG4gIHBuZzogJ3BuZycsXG4gIHN2ZzogJ3N2ZycsXG4gIHdhdjogJ3dhdicsXG4gIHdlYm06ICd3ZWJtJyxcbiAgd2VicDogJ3dlYnAnXG59IGFzIGNvbnN0O1xuIiwgIi8qKlxuICogQ29uc3RhbnQgbWFwcGluZyBvZiBpbnRlcm5hbCAoY29yZSkgcGx1Z2luIG5hbWUgaWRlbnRpZmllcnMgYnVuZGxlZCB3aXRoIE9ic2lkaWFuLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBjb25zdCBJbnRlcm5hbFBsdWdpbk5hbWUgPSB7XG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogQXVkaW8gcmVjb3JkZXIuXG4gICAqL1xuICBBdWRpb1JlY29yZGVyOiAnYXVkaW8tcmVjb3JkZXInLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IEJhY2tsaW5rcy5cbiAgICovXG4gIEJhY2tsaW5rOiAnYmFja2xpbmsnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IEJhc2VzLlxuICAgKi9cbiAgQmFzZXM6ICdiYXNlcycsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogQm9va21hcmtzLlxuICAgKi9cbiAgQm9va21hcmtzOiAnYm9va21hcmtzJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBDYW52YXMuXG4gICAqL1xuICBDYW52YXM6ICdjYW52YXMnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IENvbW1hbmQgcGFsZXR0ZS5cbiAgICovXG4gIENvbW1hbmRQYWxldHRlOiAnY29tbWFuZC1wYWxldHRlJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBEYWlseSBub3Rlcy5cbiAgICovXG4gIERhaWx5Tm90ZXM6ICdkYWlseS1ub3RlcycsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogKGhpZGRlbikuXG4gICAqL1xuICBFZGl0b3JTdGF0dXM6ICdlZGl0b3Itc3RhdHVzJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBGaWxlcy5cbiAgICovXG4gIEZpbGVFeHBsb3JlcjogJ2ZpbGUtZXhwbG9yZXInLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IEZpbGUgcmVjb3ZlcnkuXG4gICAqL1xuICBGaWxlUmVjb3Zlcnk6ICdmaWxlLXJlY292ZXJ5JyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBGb290bm90ZXMuXG4gICAqL1xuICBGb290bm90ZXM6ICdmb290bm90ZXMnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFNlYXJjaC5cbiAgICovXG4gIEdsb2JhbFNlYXJjaDogJ2dsb2JhbC1zZWFyY2gnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IEdyYXBoIHZpZXcuXG4gICAqL1xuICBHcmFwaDogJ2dyYXBoJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBGb3JtYXQgY29udmVydGVyLlxuICAgKi9cbiAgTWFya2Rvd25JbXBvcnRlcjogJ21hcmtkb3duLWltcG9ydGVyJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBOb3RlIGNvbXBvc2VyLlxuICAgKi9cbiAgTm90ZUNvbXBvc2VyOiAnbm90ZS1jb21wb3NlcicsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogT3V0Z29pbmcgbGlua3MuXG4gICAqL1xuICBPdXRnb2luZ0xpbms6ICdvdXRnb2luZy1saW5rJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBPdXRsaW5lLlxuICAgKi9cbiAgT3V0bGluZTogJ291dGxpbmUnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFBhZ2UgcHJldmlldy5cbiAgICovXG4gIFBhZ2VQcmV2aWV3OiAncGFnZS1wcmV2aWV3JyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBQcm9wZXJ0aWVzIHZpZXcuXG4gICAqL1xuICBQcm9wZXJ0aWVzOiAncHJvcGVydGllcycsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogUHVibGlzaC5cbiAgICovXG4gIFB1Ymxpc2g6ICdwdWJsaXNoJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBSYW5kb20gbm90ZS5cbiAgICovXG4gIFJhbmRvbU5vdGU6ICdyYW5kb20tbm90ZScsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogU2xhc2ggY29tbWFuZHMuXG4gICAqL1xuICBTbGFzaENvbW1hbmQ6ICdzbGFzaC1jb21tYW5kJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBTbGlkZXMuXG4gICAqL1xuICBTbGlkZXM6ICdzbGlkZXMnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFF1aWNrIFN3aXRjaGVyLlxuICAgKi9cbiAgU3dpdGNoZXI6ICdzd2l0Y2hlcicsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogU3luYy5cbiAgICovXG4gIFN5bmM6ICdzeW5jJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBUYWdzIHZpZXcuXG4gICAqL1xuICBUYWdQYW5lOiAndGFnLXBhbmUnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFRlbXBsYXRlcy5cbiAgICovXG4gIFRlbXBsYXRlczogJ3RlbXBsYXRlcycsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogV2ViIHZpZXdlci5cbiAgICovXG4gIFdlYnZpZXdlcjogJ3dlYnZpZXdlcicsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogV29yZCBjb3VudC5cbiAgICovXG4gIFdvcmRDb3VudDogJ3dvcmQtY291bnQnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFdvcmtzcGFjZXMuXG4gICAqL1xuICBXb3Jrc3BhY2VzOiAnd29ya3NwYWNlcycsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogVW5pcXVlIG5vdGUgY3JlYXRvci5cbiAgICovXG4gIFprUHJlZml4ZXI6ICd6ay1wcmVmaXhlcidcbn0gYXMgY29uc3Q7XG4iLCAiaW1wb3J0IHsgSW50ZXJuYWxQbHVnaW5OYW1lIH0gZnJvbSAnLi9JbnRlcm5hbFBsdWdpbk5hbWUudHMnO1xuXG4vKipcbiAqIENvbnN0YW50IG1hcHBpbmcgb2YgdmlldyB0eXBlIGlkZW50aWZpZXJzIHVzZWQgdG8gb3BlbiBhbmQgbWFuYWdlIGRpZmZlcmVudCBsZWFmIHZpZXdzIGluIE9ic2lkaWFuLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBjb25zdCBWaWV3VHlwZSA9IHtcbiAgQWxsUHJvcGVydGllczogJ2FsbC1wcm9wZXJ0aWVzJyxcbiAgQXVkaW86ICdhdWRpbycsXG4gIEJhY2tsaW5rOiBJbnRlcm5hbFBsdWdpbk5hbWUuQmFja2xpbmssXG4gIEJhc2VzOiBJbnRlcm5hbFBsdWdpbk5hbWUuQmFzZXMsXG4gIEJvb2ttYXJrczogSW50ZXJuYWxQbHVnaW5OYW1lLkJvb2ttYXJrcyxcbiAgQ2FudmFzOiBJbnRlcm5hbFBsdWdpbk5hbWUuQ2FudmFzLFxuICBFbXB0eTogJ2VtcHR5JyxcbiAgRmlsZUV4cGxvcmVyOiBJbnRlcm5hbFBsdWdpbk5hbWUuRmlsZUV4cGxvcmVyLFxuICBGaWxlUHJvcGVydGllczogJ2ZpbGUtcHJvcGVydGllcycsXG4gIEdyYXBoOiBJbnRlcm5hbFBsdWdpbk5hbWUuR3JhcGgsXG4gIEltYWdlOiAnaW1hZ2UnLFxuICBMb2NhbEdyYXBoOiAnbG9jYWxncmFwaCcsXG4gIE1hcmtkb3duOiAnbWFya2Rvd24nLFxuICBPdXRnb2luZ0xpbms6IEludGVybmFsUGx1Z2luTmFtZS5PdXRnb2luZ0xpbmssXG4gIE91dGxpbmU6IEludGVybmFsUGx1Z2luTmFtZS5PdXRsaW5lLFxuICBQZGY6ICdwZGYnLFxuICBSZWxlYXNlTm90ZXM6ICdyZWxlYXNlLW5vdGVzJyxcbiAgU2VhcmNoOiAnc2VhcmNoJyxcbiAgU3luYzogJ3N5bmMnLFxuICBUYWJsZTogJ3RhYmxlJyxcbiAgVGFnOiAndGFnJyxcbiAgVmlkZW86ICd2aWRlbycsXG4gIFdlYnZpZXdlcjogJ3dlYnZpZXdlcicsXG4gIFdlYnZpZXdlckhpc3Rvcnk6ICd3ZWJ2aWV3ZXItaGlzdG9yeSdcbn0gYXMgY29uc3Q7XG4iLCAiaW1wb3J0IHsgQmFzZXNFbnRyeSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEJhc2VzRW50cnkgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEJhc2VzRW50cnkgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJhc2VzRW50cnlDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8QmFzZXNFbnRyeT4ge1xuICByZXR1cm4gQmFzZXNFbnRyeSBhcyBFeHRyYWN0Q29uc3RydWN0b3I8QmFzZXNFbnRyeT47XG59XG4iLCAiaW1wb3J0IHsgQmFzZXNFbnRyeUdyb3VwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQmFzZXNFbnRyeUdyb3VwIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBCYXNlc0VudHJ5R3JvdXAgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJhc2VzRW50cnlHcm91cENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxCYXNlc0VudHJ5R3JvdXA+IHtcbiAgcmV0dXJuIEJhc2VzRW50cnlHcm91cCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8QmFzZXNFbnRyeUdyb3VwPjtcbn1cbiIsICJpbXBvcnQgeyBCYXNlc1F1ZXJ5UmVzdWx0IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQmFzZXNRdWVyeVJlc3VsdCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgQmFzZXNRdWVyeVJlc3VsdCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZXNRdWVyeVJlc3VsdENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxCYXNlc1F1ZXJ5UmVzdWx0PiB7XG4gIHJldHVybiBCYXNlc1F1ZXJ5UmVzdWx0IGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxCYXNlc1F1ZXJ5UmVzdWx0Pjtcbn1cbiIsICJpbXBvcnQgeyBCYXNlc1ZpZXdDb25maWcgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBCYXNlc1ZpZXdDb25maWcgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEJhc2VzVmlld0NvbmZpZyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZXNWaWV3Q29uZmlnQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPEJhc2VzVmlld0NvbmZpZz4ge1xuICByZXR1cm4gQmFzZXNWaWV3Q29uZmlnIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxCYXNlc1ZpZXdDb25maWc+O1xufVxuIiwgImltcG9ydCB7IFF1ZXJ5Q29udHJvbGxlciB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFF1ZXJ5Q29udHJvbGxlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgUXVlcnlDb250cm9sbGVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWVyeUNvbnRyb2xsZXJDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8UXVlcnlDb250cm9sbGVyPiB7XG4gIHJldHVybiBRdWVyeUNvbnRyb2xsZXIgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFF1ZXJ5Q29udHJvbGxlcj47XG59XG4iLCAiaW1wb3J0IHsgQWJzdHJhY3RUZXh0Q29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQWJzdHJhY3RUZXh0Q29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBBYnN0cmFjdFRleHRDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFic3RyYWN0VGV4dENvbXBvbmVudENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxcbiAgQWJzdHJhY3RUZXh0Q29tcG9uZW50PEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50PlxuPiB7XG4gIHJldHVybiBBYnN0cmFjdFRleHRDb21wb25lbnQgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFxuICAgIEFic3RyYWN0VGV4dENvbXBvbmVudDxIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudD5cbiAgPjtcbn1cbiIsICJpbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQmFzZUNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgQmFzZUNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZUNvbXBvbmVudENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxCYXNlQ29tcG9uZW50PiB7XG4gIHJldHVybiBCYXNlQ29tcG9uZW50IGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxCYXNlQ29tcG9uZW50Pjtcbn1cbiIsICJpbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBCdXR0b25Db21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEJ1dHRvbkNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QnV0dG9uQ29tcG9uZW50Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPEJ1dHRvbkNvbXBvbmVudD4ge1xuICByZXR1cm4gQnV0dG9uQ29tcG9uZW50IGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxCdXR0b25Db21wb25lbnQ+O1xufVxuIiwgImltcG9ydCB7IENvbG9yQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQ29sb3JDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIENvbG9yQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xvckNvbXBvbmVudENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxDb2xvckNvbXBvbmVudD4ge1xuICByZXR1cm4gQ29sb3JDb21wb25lbnQgYXMgRXh0cmFjdENvbnN0cnVjdG9yPENvbG9yQ29tcG9uZW50Pjtcbn1cbiIsICJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIENvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tcG9uZW50Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPENvbXBvbmVudD4ge1xuICByZXR1cm4gQ29tcG9uZW50IGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxDb21wb25lbnQ+O1xufVxuIiwgImltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgRHJvcGRvd25Db21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIERyb3Bkb3duQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREcm9wZG93bkNvbXBvbmVudENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxEcm9wZG93bkNvbXBvbmVudD4ge1xuICByZXR1cm4gRHJvcGRvd25Db21wb25lbnQgYXMgRXh0cmFjdENvbnN0cnVjdG9yPERyb3Bkb3duQ29tcG9uZW50Pjtcbn1cbiIsICJpbXBvcnQgeyBFeHRyYUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEV4dHJhQnV0dG9uQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBFeHRyYUJ1dHRvbkNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXh0cmFCdXR0b25Db21wb25lbnRDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8RXh0cmFCdXR0b25Db21wb25lbnQ+IHtcbiAgcmV0dXJuIEV4dHJhQnV0dG9uQ29tcG9uZW50IGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxFeHRyYUJ1dHRvbkNvbXBvbmVudD47XG59XG4iLCAiaW1wb3J0IHsgTW9tZW50Rm9ybWF0Q29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTW9tZW50Rm9ybWF0Q29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBNb21lbnRGb3JtYXRDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1vbWVudEZvcm1hdENvbXBvbmVudENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxNb21lbnRGb3JtYXRDb21wb25lbnQ+IHtcbiAgcmV0dXJuIE1vbWVudEZvcm1hdENvbXBvbmVudCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8TW9tZW50Rm9ybWF0Q29tcG9uZW50Pjtcbn1cbiIsICJpbXBvcnQgeyBQcm9ncmVzc0JhckNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFByb2dyZXNzQmFyQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBQcm9ncmVzc0JhckNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvZ3Jlc3NCYXJDb21wb25lbnRDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8UHJvZ3Jlc3NCYXJDb21wb25lbnQ+IHtcbiAgcmV0dXJuIFByb2dyZXNzQmFyQ29tcG9uZW50IGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxQcm9ncmVzc0JhckNvbXBvbmVudD47XG59XG4iLCAiaW1wb3J0IHsgU2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgU2VhcmNoQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBTZWFyY2hDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlYXJjaENvbXBvbmVudENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxTZWFyY2hDb21wb25lbnQ+IHtcbiAgcmV0dXJuIFNlYXJjaENvbXBvbmVudCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8U2VhcmNoQ29tcG9uZW50Pjtcbn1cbiIsICJpbXBvcnQgeyBTZWNyZXRDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBTZWNyZXRDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFNlY3JldENvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VjcmV0Q29tcG9uZW50Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFNlY3JldENvbXBvbmVudD4ge1xuICByZXR1cm4gU2VjcmV0Q29tcG9uZW50IGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxTZWNyZXRDb21wb25lbnQ+O1xufVxuIiwgImltcG9ydCB7IFNsaWRlckNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFNsaWRlckNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgU2xpZGVyQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTbGlkZXJDb21wb25lbnRDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8U2xpZGVyQ29tcG9uZW50PiB7XG4gIHJldHVybiBTbGlkZXJDb21wb25lbnQgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFNsaWRlckNvbXBvbmVudD47XG59XG4iLCAiaW1wb3J0IHsgVGV4dEFyZWFDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBUZXh0QXJlYUNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVGV4dEFyZWFDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHRBcmVhQ29tcG9uZW50Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFRleHRBcmVhQ29tcG9uZW50PiB7XG4gIHJldHVybiBUZXh0QXJlYUNvbXBvbmVudCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8VGV4dEFyZWFDb21wb25lbnQ+O1xufVxuIiwgImltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBUZXh0Q29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBUZXh0Q29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0Q29tcG9uZW50Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFRleHRDb21wb25lbnQ+IHtcbiAgcmV0dXJuIFRleHRDb21wb25lbnQgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFRleHRDb21wb25lbnQ+O1xufVxuIiwgImltcG9ydCB7IFRvZ2dsZUNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFRvZ2dsZUNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVG9nZ2xlQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb2dnbGVDb21wb25lbnRDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8VG9nZ2xlQ29tcG9uZW50PiB7XG4gIHJldHVybiBUb2dnbGVDb21wb25lbnQgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFRvZ2dsZUNvbXBvbmVudD47XG59XG4iLCAiaW1wb3J0IHsgVmFsdWVDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBWYWx1ZUNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVmFsdWVDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlQ29tcG9uZW50Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFZhbHVlQ29tcG9uZW50PHVua25vd24+PiB7XG4gIHJldHVybiBWYWx1ZUNvbXBvbmVudCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8VmFsdWVDb21wb25lbnQ8dW5rbm93bj4+O1xufVxuIiwgImltcG9ydCB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEFwcCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgQXBwIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBcHBDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8QXBwPiB7XG4gIHJldHVybiBBcHAgYXMgRXh0cmFjdENvbnN0cnVjdG9yPEFwcD47XG59XG4iLCAiaW1wb3J0IHsgQ2FwYWNpdG9yQWRhcHRlciB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIENhcGFjaXRvckFkYXB0ZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIENhcGFjaXRvckFkYXB0ZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhcGFjaXRvckFkYXB0ZXJDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8Q2FwYWNpdG9yQWRhcHRlcj4ge1xuICByZXR1cm4gQ2FwYWNpdG9yQWRhcHRlciBhcyBFeHRyYWN0Q29uc3RydWN0b3I8Q2FwYWNpdG9yQWRhcHRlcj47XG59XG4iLCAiaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgRWRpdG9yIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBFZGl0b3IgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVkaXRvckNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxFZGl0b3I+IHtcbiAgcmV0dXJuIEVkaXRvciBhcyBFeHRyYWN0Q29uc3RydWN0b3I8RWRpdG9yPjtcbn1cbiIsICJpbXBvcnQgeyBFdmVudHMgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBFdmVudHMgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEV2ZW50cyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXZlbnRzQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPEV2ZW50cz4ge1xuICByZXR1cm4gRXZlbnRzIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxFdmVudHM+O1xufVxuIiwgImltcG9ydCB7IEZpbGVNYW5hZ2VyIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgRmlsZU1hbmFnZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEZpbGVNYW5hZ2VyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlTWFuYWdlckNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxGaWxlTWFuYWdlcj4ge1xuICByZXR1cm4gRmlsZU1hbmFnZXIgYXMgRXh0cmFjdENvbnN0cnVjdG9yPEZpbGVNYW5hZ2VyPjtcbn1cbiIsICJpbXBvcnQgeyBGaWxlU3lzdGVtQWRhcHRlciB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEZpbGVTeXN0ZW1BZGFwdGVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBGaWxlU3lzdGVtQWRhcHRlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZVN5c3RlbUFkYXB0ZXJDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8RmlsZVN5c3RlbUFkYXB0ZXI+IHtcbiAgcmV0dXJuIEZpbGVTeXN0ZW1BZGFwdGVyIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxGaWxlU3lzdGVtQWRhcHRlcj47XG59XG4iLCAiaW1wb3J0IHsgRnV6enlTdWdnZXN0TW9kYWwgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBGdXp6eVN1Z2dlc3RNb2RhbCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgRnV6enlTdWdnZXN0TW9kYWwgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZ1enp5U3VnZ2VzdE1vZGFsQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPEZ1enp5U3VnZ2VzdE1vZGFsPHVua25vd24+PiB7XG4gIHJldHVybiBGdXp6eVN1Z2dlc3RNb2RhbCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8RnV6enlTdWdnZXN0TW9kYWw8dW5rbm93bj4+O1xufVxuIiwgImltcG9ydCB7IEhvdmVyUG9wb3ZlciB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEhvdmVyUG9wb3ZlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgSG92ZXJQb3BvdmVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIb3ZlclBvcG92ZXJDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8SG92ZXJQb3BvdmVyPiB7XG4gIHJldHVybiBIb3ZlclBvcG92ZXIgYXMgRXh0cmFjdENvbnN0cnVjdG9yPEhvdmVyUG9wb3Zlcj47XG59XG4iLCAiaW1wb3J0IHsgS2V5bWFwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgS2V5bWFwIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBLZXltYXAgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEtleW1hcENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxLZXltYXA+IHtcbiAgcmV0dXJuIEtleW1hcCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8S2V5bWFwPjtcbn1cbiIsICJpbXBvcnQgeyBNYXJrZG93blByZXZpZXdSZW5kZXJlciB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIE1hcmtkb3duUHJldmlld1JlbmRlcmVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBNYXJrZG93blByZXZpZXdSZW5kZXJlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25QcmV2aWV3UmVuZGVyZXJDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8TWFya2Rvd25QcmV2aWV3UmVuZGVyZXI+IHtcbiAgcmV0dXJuIE1hcmtkb3duUHJldmlld1JlbmRlcmVyIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxNYXJrZG93blByZXZpZXdSZW5kZXJlcj47XG59XG4iLCAiaW1wb3J0IHsgTWFya2Rvd25QcmV2aWV3VmlldyB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIE1hcmtkb3duUHJldmlld1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIE1hcmtkb3duUHJldmlld1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duUHJldmlld1ZpZXdDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8TWFya2Rvd25QcmV2aWV3Vmlldz4ge1xuICByZXR1cm4gTWFya2Rvd25QcmV2aWV3VmlldyBhcyB1bmtub3duIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxNYXJrZG93blByZXZpZXdWaWV3Pjtcbn1cbiIsICJpbXBvcnQgeyBNYXJrZG93blJlbmRlckNoaWxkIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTWFya2Rvd25SZW5kZXJDaGlsZCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgTWFya2Rvd25SZW5kZXJDaGlsZCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25SZW5kZXJDaGlsZENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxNYXJrZG93blJlbmRlckNoaWxkPiB7XG4gIHJldHVybiBNYXJrZG93blJlbmRlckNoaWxkIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxNYXJrZG93blJlbmRlckNoaWxkPjtcbn1cbiIsICJpbXBvcnQgeyBNYXJrZG93blJlbmRlcmVyIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTWFya2Rvd25SZW5kZXJlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgTWFya2Rvd25SZW5kZXJlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25SZW5kZXJlckNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxNYXJrZG93blJlbmRlcmVyPiB7XG4gIHJldHVybiBNYXJrZG93blJlbmRlcmVyIGFzIHVua25vd24gYXMgRXh0cmFjdENvbnN0cnVjdG9yPE1hcmtkb3duUmVuZGVyZXI+O1xufVxuIiwgImltcG9ydCB7IE1lbnUgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBNZW51IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBNZW51IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZW51Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPE1lbnU+IHtcbiAgcmV0dXJuIE1lbnUgYXMgRXh0cmFjdENvbnN0cnVjdG9yPE1lbnU+O1xufVxuIiwgImltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTWVudUl0ZW0gY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIE1lbnVJdGVtIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZW51SXRlbUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxNZW51SXRlbT4ge1xuICByZXR1cm4gTWVudUl0ZW0gYXMgdW5rbm93biBhcyBFeHRyYWN0Q29uc3RydWN0b3I8TWVudUl0ZW0+O1xufVxuIiwgImltcG9ydCB7IE1lbnVTZXBhcmF0b3IgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBNZW51U2VwYXJhdG9yIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBNZW51U2VwYXJhdG9yIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZW51U2VwYXJhdG9yQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPE1lbnVTZXBhcmF0b3I+IHtcbiAgcmV0dXJuIE1lbnVTZXBhcmF0b3IgYXMgRXh0cmFjdENvbnN0cnVjdG9yPE1lbnVTZXBhcmF0b3I+O1xufVxuIiwgImltcG9ydCB7IE1ldGFkYXRhQ2FjaGUgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBNZXRhZGF0YUNhY2hlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBNZXRhZGF0YUNhY2hlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZXRhZGF0YUNhY2hlQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPE1ldGFkYXRhQ2FjaGU+IHtcbiAgcmV0dXJuIE1ldGFkYXRhQ2FjaGUgYXMgRXh0cmFjdENvbnN0cnVjdG9yPE1ldGFkYXRhQ2FjaGU+O1xufVxuIiwgImltcG9ydCB7IE1vZGFsIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTW9kYWwgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIE1vZGFsIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNb2RhbENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxNb2RhbD4ge1xuICByZXR1cm4gTW9kYWwgYXMgRXh0cmFjdENvbnN0cnVjdG9yPE1vZGFsPjtcbn1cbiIsICJpbXBvcnQgeyBOb3RpY2UgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBOb3RpY2UgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIE5vdGljZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm90aWNlQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPE5vdGljZT4ge1xuICByZXR1cm4gTm90aWNlIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxOb3RpY2U+O1xufVxuIiwgImltcG9ydCB7IFJlbmRlckNvbnRleHQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBSZW5kZXJDb250ZXh0IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBSZW5kZXJDb250ZXh0IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZW5kZXJDb250ZXh0Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFJlbmRlckNvbnRleHQ+IHtcbiAgcmV0dXJuIFJlbmRlckNvbnRleHQgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFJlbmRlckNvbnRleHQ+O1xufVxuIiwgImltcG9ydCB7IFNjb3BlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgU2NvcGUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFNjb3BlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY29wZUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxTY29wZT4ge1xuICByZXR1cm4gU2NvcGUgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFNjb3BlPjtcbn1cbiIsICJpbXBvcnQgeyBTZWNyZXRTdG9yYWdlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgU2VjcmV0U3RvcmFnZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgU2VjcmV0U3RvcmFnZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VjcmV0U3RvcmFnZUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxTZWNyZXRTdG9yYWdlPiB7XG4gIHJldHVybiBTZWNyZXRTdG9yYWdlIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxTZWNyZXRTdG9yYWdlPjtcbn1cbiIsICJpbXBvcnQgeyBTZXR0aW5nIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgU2V0dGluZyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgU2V0dGluZyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2V0dGluZ0NvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxTZXR0aW5nPiB7XG4gIHJldHVybiBTZXR0aW5nIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxTZXR0aW5nPjtcbn1cbiIsICJpbXBvcnQgeyBTZXR0aW5nR3JvdXAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBTZXR0aW5nR3JvdXAgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFNldHRpbmdHcm91cCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2V0dGluZ0dyb3VwQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFNldHRpbmdHcm91cD4ge1xuICByZXR1cm4gU2V0dGluZ0dyb3VwIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxTZXR0aW5nR3JvdXA+O1xufVxuIiwgImltcG9ydCB7IFNldHRpbmdUYWIgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBTZXR0aW5nVGFiIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBTZXR0aW5nVGFiIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXR0aW5nVGFiQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFNldHRpbmdUYWI+IHtcbiAgcmV0dXJuIFNldHRpbmdUYWIgYXMgdW5rbm93biBhcyBFeHRyYWN0Q29uc3RydWN0b3I8U2V0dGluZ1RhYj47XG59XG4iLCAiaW1wb3J0IHsgVEFic3RyYWN0RmlsZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFRBYnN0cmFjdEZpbGUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFRBYnN0cmFjdEZpbGUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRBYnN0cmFjdEZpbGVDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8VEFic3RyYWN0RmlsZT4ge1xuICByZXR1cm4gVEFic3RyYWN0RmlsZSBhcyB1bmtub3duIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxUQWJzdHJhY3RGaWxlPjtcbn1cbiIsICJpbXBvcnQgeyBUYXNrcyB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3RvckJhc2UgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0NvbnN0cnVjdG9yQmFzZS5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFRhc2tzIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBUYXNrcyBjb25zdHJ1Y3Rvci5cbiAqIEByZW1hcmsgQ29uc3RydWN0b3IgaXMgYG51bGxgLiBTZWUge0BsaW5rIGh0dHBzOi8vZm9ydW0ub2JzaWRpYW4ubWQvdC9hcGktYnVnLXRhc2tzLWNsYXNzLzk4OTkzfS5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFza3NDb25zdHJ1Y3RvcigpOiBDb25zdHJ1Y3RvckJhc2U8W10sIFRhc2tzPiB7XG4gIHJldHVybiBUYXNrcyBhcyBDb25zdHJ1Y3RvckJhc2U8W10sIFRhc2tzPjtcbn1cbiIsICJpbXBvcnQgeyBURmlsZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFRGaWxlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBURmlsZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VEZpbGVDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8VEZpbGU+IHtcbiAgcmV0dXJuIFRGaWxlIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxURmlsZT47XG59XG4iLCAiaW1wb3J0IHsgVEZvbGRlciB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFRGb2xkZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFRGb2xkZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRGb2xkZXJDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8VEZvbGRlcj4ge1xuICByZXR1cm4gVEZvbGRlciBhcyBFeHRyYWN0Q29uc3RydWN0b3I8VEZvbGRlcj47XG59XG4iLCAiaW1wb3J0IHsgVmF1bHQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBWYXVsdCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVmF1bHQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhdWx0Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFZhdWx0PiB7XG4gIHJldHVybiBWYXVsdCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8VmF1bHQ+O1xufVxuIiwgImltcG9ydCB7IFdvcmtzcGFjZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFdvcmtzcGFjZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlPiB7XG4gIHJldHVybiBXb3Jrc3BhY2UgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZT47XG59XG4iLCAiaW1wb3J0IHsgV29ya3NwYWNlQ29udGFpbmVyIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlQ29udGFpbmVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBXb3Jrc3BhY2VDb250YWluZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtzcGFjZUNvbnRhaW5lckNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VDb250YWluZXI+IHtcbiAgcmV0dXJuIFdvcmtzcGFjZUNvbnRhaW5lciBhcyB1bmtub3duIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VDb250YWluZXI+O1xufVxuIiwgImltcG9ydCB7IFdvcmtzcGFjZUZsb2F0aW5nIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlRmxvYXRpbmcgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFdvcmtzcGFjZUZsb2F0aW5nIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VGbG9hdGluZ0NvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VGbG9hdGluZz4ge1xuICByZXR1cm4gV29ya3NwYWNlRmxvYXRpbmcgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZUZsb2F0aW5nPjtcbn1cbiIsICJpbXBvcnQgeyBXb3Jrc3BhY2VJdGVtIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlSXRlbSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlSXRlbSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlSXRlbUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VJdGVtPiB7XG4gIHJldHVybiBXb3Jrc3BhY2VJdGVtIGFzIHVua25vd24gYXMgRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZUl0ZW0+O1xufVxuIiwgImltcG9ydCB7IFdvcmtzcGFjZUxlYWYgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBXb3Jrc3BhY2VMZWFmIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBXb3Jrc3BhY2VMZWFmIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VMZWFmQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZUxlYWY+IHtcbiAgcmV0dXJuIFdvcmtzcGFjZUxlYWYgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZUxlYWY+O1xufVxuIiwgImltcG9ydCB7IFdvcmtzcGFjZU1vYmlsZURyYXdlciB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFdvcmtzcGFjZU1vYmlsZURyYXdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlTW9iaWxlRHJhd2VyIGNvbnN0cnVjdG9yLlxuICogQHJlbWFyayBDb25zdHJ1Y3RvciBpcyBgbnVsbGAuIFNlZSB7QGxpbmsgaHR0cHM6Ly9mb3J1bS5vYnNpZGlhbi5tZC90L2FwaS1idWctdGFza3MtY2xhc3MvOTg5OTN9LlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VNb2JpbGVEcmF3ZXJDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlTW9iaWxlRHJhd2VyPiB7XG4gIHJldHVybiBXb3Jrc3BhY2VNb2JpbGVEcmF3ZXIgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZU1vYmlsZURyYXdlcj47XG59XG4iLCAiaW1wb3J0IHsgV29ya3NwYWNlUGFyZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlUGFyZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBXb3Jrc3BhY2VQYXJlbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtzcGFjZVBhcmVudENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VQYXJlbnQ+IHtcbiAgcmV0dXJuIFdvcmtzcGFjZVBhcmVudCBhcyB1bmtub3duIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VQYXJlbnQ+O1xufVxuIiwgImltcG9ydCB7IFdvcmtzcGFjZVJpYmJvbiB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFdvcmtzcGFjZVJpYmJvbiBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlUmliYm9uIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VSaWJib25Db25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlUmliYm9uPiB7XG4gIHJldHVybiBXb3Jrc3BhY2VSaWJib24gYXMgRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZVJpYmJvbj47XG59XG4iLCAiaW1wb3J0IHsgV29ya3NwYWNlUm9vdCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFdvcmtzcGFjZVJvb3QgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFdvcmtzcGFjZVJvb3QgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtzcGFjZVJvb3RDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlUm9vdD4ge1xuICByZXR1cm4gV29ya3NwYWNlUm9vdCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlUm9vdD47XG59XG4iLCAiaW1wb3J0IHsgV29ya3NwYWNlU2lkZWRvY2sgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBXb3Jrc3BhY2VTaWRlZG9jayBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlU2lkZWRvY2sgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtzcGFjZVNpZGVkb2NrQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZVNpZGVkb2NrPiB7XG4gIHJldHVybiBXb3Jrc3BhY2VTaWRlZG9jayBhcyBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlU2lkZWRvY2s+O1xufVxuIiwgImltcG9ydCB7IFdvcmtzcGFjZVNwbGl0IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlU3BsaXQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFdvcmtzcGFjZVNwbGl0IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VTcGxpdENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VTcGxpdD4ge1xuICByZXR1cm4gV29ya3NwYWNlU3BsaXQgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZVNwbGl0Pjtcbn1cbiIsICJpbXBvcnQgeyBXb3Jrc3BhY2VUYWJzIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlVGFicyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlVGFicyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlVGFic0NvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VUYWJzPiB7XG4gIHJldHVybiBXb3Jrc3BhY2VUYWJzIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VUYWJzPjtcbn1cbiIsICJpbXBvcnQgeyBXb3Jrc3BhY2VXaW5kb3cgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBXb3Jrc3BhY2VXaW5kb3cgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFdvcmtzcGFjZVdpbmRvdyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlV2luZG93Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZVdpbmRvdz4ge1xuICByZXR1cm4gV29ya3NwYWNlV2luZG93IGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VXaW5kb3c+O1xufVxuIiwgImltcG9ydCB7IEJvb2xlYW5WYWx1ZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEJvb2xlYW5WYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgQm9vbGVhblZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCb29sZWFuVmFsdWVDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8Qm9vbGVhblZhbHVlPiB7XG4gIHJldHVybiBCb29sZWFuVmFsdWUgYXMgRXh0cmFjdENvbnN0cnVjdG9yPEJvb2xlYW5WYWx1ZT47XG59XG4iLCAiaW1wb3J0IHsgRGF0ZVZhbHVlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgRGF0ZVZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBEYXRlVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGVWYWx1ZUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxEYXRlVmFsdWU+IHtcbiAgcmV0dXJuIERhdGVWYWx1ZSBhcyBFeHRyYWN0Q29uc3RydWN0b3I8RGF0ZVZhbHVlPjtcbn1cbiIsICJpbXBvcnQgeyBEdXJhdGlvblZhbHVlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgRHVyYXRpb25WYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgRHVyYXRpb25WYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHVyYXRpb25WYWx1ZUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxEdXJhdGlvblZhbHVlPiB7XG4gIHJldHVybiBEdXJhdGlvblZhbHVlIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxEdXJhdGlvblZhbHVlPjtcbn1cbiIsICJpbXBvcnQgeyBGaWxlVmFsdWUgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBGaWxlVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEZpbGVWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZVZhbHVlQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPEZpbGVWYWx1ZT4ge1xuICByZXR1cm4gRmlsZVZhbHVlIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxGaWxlVmFsdWU+O1xufVxuIiwgImltcG9ydCB7IEhUTUxWYWx1ZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEhUTUxWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgSFRNTFZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIVE1MVmFsdWVDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8SFRNTFZhbHVlPiB7XG4gIHJldHVybiBIVE1MVmFsdWUgYXMgRXh0cmFjdENvbnN0cnVjdG9yPEhUTUxWYWx1ZT47XG59XG4iLCAiaW1wb3J0IHsgSWNvblZhbHVlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgSWNvblZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBJY29uVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEljb25WYWx1ZUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxJY29uVmFsdWU+IHtcbiAgcmV0dXJuIEljb25WYWx1ZSBhcyBFeHRyYWN0Q29uc3RydWN0b3I8SWNvblZhbHVlPjtcbn1cbiIsICJpbXBvcnQgeyBJbWFnZVZhbHVlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgSW1hZ2VWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgSW1hZ2VWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1hZ2VWYWx1ZUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxJbWFnZVZhbHVlPiB7XG4gIHJldHVybiBJbWFnZVZhbHVlIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxJbWFnZVZhbHVlPjtcbn1cbiIsICJpbXBvcnQgeyBMaW5rVmFsdWUgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBMaW5rVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIExpbmtWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGlua1ZhbHVlQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPExpbmtWYWx1ZT4ge1xuICByZXR1cm4gTGlua1ZhbHVlIGFzIHVua25vd24gYXMgRXh0cmFjdENvbnN0cnVjdG9yPExpbmtWYWx1ZT47XG59XG4iLCAiaW1wb3J0IHsgTGlzdFZhbHVlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTGlzdFZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBMaXN0VmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpc3RWYWx1ZUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxMaXN0VmFsdWU+IHtcbiAgcmV0dXJuIExpc3RWYWx1ZSBhcyBFeHRyYWN0Q29uc3RydWN0b3I8TGlzdFZhbHVlPjtcbn1cbiIsICJpbXBvcnQgeyBOb3ROdWxsVmFsdWUgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBOb3ROdWxsVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIE5vdE51bGxWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm90TnVsbFZhbHVlQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPE5vdE51bGxWYWx1ZT4ge1xuICByZXR1cm4gTm90TnVsbFZhbHVlIGFzIHVua25vd24gYXMgRXh0cmFjdENvbnN0cnVjdG9yPE5vdE51bGxWYWx1ZT47XG59XG4iLCAiaW1wb3J0IHsgTnVsbFZhbHVlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTnVsbFZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBOdWxsVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE51bGxWYWx1ZUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxOdWxsVmFsdWU+IHtcbiAgcmV0dXJuIE51bGxWYWx1ZSBhcyBFeHRyYWN0Q29uc3RydWN0b3I8TnVsbFZhbHVlPjtcbn1cbiIsICJpbXBvcnQgeyBOdW1iZXJWYWx1ZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIE51bWJlclZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBOdW1iZXJWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TnVtYmVyVmFsdWVDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8TnVtYmVyVmFsdWU+IHtcbiAgcmV0dXJuIE51bWJlclZhbHVlIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxOdW1iZXJWYWx1ZT47XG59XG4iLCAiaW1wb3J0IHsgT2JqZWN0VmFsdWUgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBPYmplY3RWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgT2JqZWN0VmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdFZhbHVlQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPE9iamVjdFZhbHVlPiB7XG4gIHJldHVybiBPYmplY3RWYWx1ZSBhcyBFeHRyYWN0Q29uc3RydWN0b3I8T2JqZWN0VmFsdWU+O1xufVxuIiwgImltcG9ydCB7IFJlZ0V4cFZhbHVlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgUmVnRXhwVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFJlZ0V4cFZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWdFeHBWYWx1ZUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxSZWdFeHBWYWx1ZT4ge1xuICByZXR1cm4gUmVnRXhwVmFsdWUgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFJlZ0V4cFZhbHVlPjtcbn1cbiIsICJpbXBvcnQgeyBSZWxhdGl2ZURhdGVWYWx1ZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFJlbGF0aXZlRGF0ZVZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBSZWxhdGl2ZURhdGVWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVsYXRpdmVEYXRlVmFsdWVDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8UmVsYXRpdmVEYXRlVmFsdWU+IHtcbiAgcmV0dXJuIFJlbGF0aXZlRGF0ZVZhbHVlIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxSZWxhdGl2ZURhdGVWYWx1ZT47XG59XG4iLCAiaW1wb3J0IHsgU3RyaW5nVmFsdWUgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBTdHJpbmdWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgU3RyaW5nVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0cmluZ1ZhbHVlQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFN0cmluZ1ZhbHVlPiB7XG4gIHJldHVybiBTdHJpbmdWYWx1ZSBhcyBFeHRyYWN0Q29uc3RydWN0b3I8U3RyaW5nVmFsdWU+O1xufVxuIiwgImltcG9ydCB7IFRhZ1ZhbHVlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgVGFnVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFRhZ1ZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYWdWYWx1ZUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxUYWdWYWx1ZT4ge1xuICByZXR1cm4gVGFnVmFsdWUgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFRhZ1ZhbHVlPjtcbn1cbiIsICJpbXBvcnQgeyBVcmxWYWx1ZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFVybFZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBVcmxWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXJsVmFsdWVDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8VXJsVmFsdWU+IHtcbiAgcmV0dXJuIFVybFZhbHVlIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxVcmxWYWx1ZT47XG59XG4iLCAiaW1wb3J0IHsgVmFsdWUgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFZhbHVlPiB7XG4gIHJldHVybiBWYWx1ZSBhcyB1bmtub3duIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxWYWx1ZT47XG59XG4iLCAiaW1wb3J0IHsgRWRpdGFibGVGaWxlVmlldyB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEVkaXRhYmxlRmlsZVZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEVkaXRhYmxlRmlsZVZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVkaXRhYmxlRmlsZVZpZXdDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8RWRpdGFibGVGaWxlVmlldz4ge1xuICByZXR1cm4gRWRpdGFibGVGaWxlVmlldyBhcyBFeHRyYWN0Q29uc3RydWN0b3I8RWRpdGFibGVGaWxlVmlldz47XG59XG4iLCAiaW1wb3J0IHsgTWFya2Rvd25WaWV3IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTWFya2Rvd25WaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBNYXJrZG93blZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duVmlld0NvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxNYXJrZG93blZpZXc+IHtcbiAgcmV0dXJuIE1hcmtkb3duVmlldyBhcyBFeHRyYWN0Q29uc3RydWN0b3I8TWFya2Rvd25WaWV3Pjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBBcHBNZW51QmFyTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9BcHBNZW51QmFyTWFuYWdlci5kLnRzJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBBcHBNZW51QmFyTWFuYWdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBBcHBNZW51QmFyTWFuYWdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwTWVudUJhck1hbmFnZXJDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxBcHBNZW51QmFyTWFuYWdlcj4ge1xuICByZXR1cm4gYXBwLmFwcE1lbnVCYXJNYW5hZ2VyLmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxBcHBNZW51QmFyTWFuYWdlcj47XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgQXBwU2V0dGluZyB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9BcHBTZXR0aW5nLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEFwcFNldHRpbmcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgQXBwU2V0dGluZyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwU2V0dGluZ0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPEFwcFNldHRpbmc+IHtcbiAgcmV0dXJuIGFwcC5zZXR0aW5nLmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxBcHBTZXR0aW5nPjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBDbGkgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY2xpL0NsaS5kLnRzJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBDbGkgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgQ2xpIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGlDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxDbGk+IHtcbiAgcmV0dXJuIGFwcC5jbGkuY29uc3RydWN0b3IgYXMgRXh0cmFjdENvbnN0cnVjdG9yPENsaT47XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgQ29tbWFuZHMgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29tbWFuZHMvQ29tbWFuZHMuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQ29tbWFuZHMgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgQ29tbWFuZHMgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbW1hbmRzQ29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8Q29tbWFuZHM+IHtcbiAgcmV0dXJuIGFwcC5jb21tYW5kcy5jb25zdHJ1Y3RvciBhcyBFeHRyYWN0Q29uc3RydWN0b3I8Q29tbWFuZHM+O1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21DU1MgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY3VzdG9tLWNzcy9DdXN0b21DU1MuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBDdXN0b21DU1MgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgQ3VzdG9tQ1NTIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXN0b21DU1NDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxDdXN0b21DU1M+IHtcbiAgcmV0dXJuIGFwcC5jdXN0b21Dc3MuY29uc3RydWN0b3IgYXMgRXh0cmFjdENvbnN0cnVjdG9yPEN1c3RvbUNTUz47XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IERyYWdNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2RyYWctbWFuYWdlci9EcmFnTWFuYWdlci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIERyYWdNYW5hZ2VyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIERyYWdNYW5hZ2VyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREcmFnTWFuYWdlckNvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPERyYWdNYW5hZ2VyPiB7XG4gIHJldHVybiBhcHAuZHJhZ01hbmFnZXIuY29uc3RydWN0b3IgYXMgRXh0cmFjdENvbnN0cnVjdG9yPERyYWdNYW5hZ2VyPjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgRWRpdG9yU3VnZ2VzdHMgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvRWRpdG9yU3VnZ2VzdHMuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBFZGl0b3JTdWdnZXN0cyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBFZGl0b3JTdWdnZXN0cyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWRpdG9yU3VnZ2VzdHNDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxFZGl0b3JTdWdnZXN0cz4ge1xuICByZXR1cm4gYXBwLndvcmtzcGFjZS5lZGl0b3JTdWdnZXN0LmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxFZGl0b3JTdWdnZXN0cz47XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEVtYmVkUmVnaXN0cnkgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvZW1iZWQtcmVnaXN0cnkvRW1iZWRSZWdpc3RyeS5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEVtYmVkUmVnaXN0cnkgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgRW1iZWRSZWdpc3RyeSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW1iZWRSZWdpc3RyeUNvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPEVtYmVkUmVnaXN0cnk+IHtcbiAgcmV0dXJuIGFwcC5lbWJlZFJlZ2lzdHJ5LmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxFbWJlZFJlZ2lzdHJ5Pjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgRm9sZE1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvRm9sZE1hbmFnZXIuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBGb2xkTWFuYWdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBGb2xkTWFuYWdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZE1hbmFnZXJDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxGb2xkTWFuYWdlcj4ge1xuICByZXR1cm4gYXBwLmZvbGRNYW5hZ2VyLmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxGb2xkTWFuYWdlcj47XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgRnJhbWVEb20gfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvRnJhbWVEb20uZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBGcmFtZURvbSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgRnJhbWVEb20gY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZyYW1lRG9tQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPEZyYW1lRG9tPiB7XG4gIHJldHVybiB3aW5kb3cuZnJhbWVEb20uY29uc3RydWN0b3IgYXMgRXh0cmFjdENvbnN0cnVjdG9yPEZyYW1lRG9tPjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgSG90a2V5TWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9ob3RrZXktbWFuYWdlci9Ib3RrZXlNYW5hZ2VyLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgSG90a2V5TWFuYWdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBIb3RrZXlNYW5hZ2VyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIb3RrZXlNYW5hZ2VyQ29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8SG90a2V5TWFuYWdlcj4ge1xuICByZXR1cm4gYXBwLmhvdGtleU1hbmFnZXIuY29uc3RydWN0b3IgYXMgRXh0cmFjdENvbnN0cnVjdG9yPEhvdGtleU1hbmFnZXI+O1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBNZXRhZGF0YVR5cGVNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL21ldGFkYXRhLXR5cGUtbWFuYWdlci9NZXRhZGF0YVR5cGVNYW5hZ2VyLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTWV0YWRhdGFUeXBlTWFuYWdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBNZXRhZGF0YVR5cGVNYW5hZ2VyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZXRhZGF0YVR5cGVNYW5hZ2VyQ29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8TWV0YWRhdGFUeXBlTWFuYWdlcj4ge1xuICByZXR1cm4gYXBwLm1ldGFkYXRhVHlwZU1hbmFnZXIuY29uc3RydWN0b3IgYXMgRXh0cmFjdENvbnN0cnVjdG9yPE1ldGFkYXRhVHlwZU1hbmFnZXI+O1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBPYnNpZGlhbkRPTSB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9PYnNpZGlhbkRPTS5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIE9ic2lkaWFuRE9NIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIE9ic2lkaWFuRE9NIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPYnNpZGlhbkRPTUNvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPE9ic2lkaWFuRE9NPiB7XG4gIHJldHVybiBhcHAuZG9tLmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxPYnNpZGlhbkRPTT47XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbnMgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvcGx1Z2lucy9QbHVnaW5zLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgUGx1Z2lucyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBQbHVnaW5zIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQbHVnaW5zQ29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8UGx1Z2lucz4ge1xuICByZXR1cm4gYXBwLnBsdWdpbnMuY29uc3RydWN0b3IgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFBsdWdpbnM+O1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBSZWNlbnRGaWxlVHJhY2tlciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9SZWNlbnRGaWxlVHJhY2tlci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFJlY2VudEZpbGVUcmFja2VyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIFJlY2VudEZpbGVUcmFja2VyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWNlbnRGaWxlVHJhY2tlckNvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPFJlY2VudEZpbGVUcmFja2VyPiB7XG4gIHJldHVybiBhcHAud29ya3NwYWNlLnJlY2VudEZpbGVUcmFja2VyLmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxSZWNlbnRGaWxlVHJhY2tlcj47XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFNoYXJlUmVjZWl2ZXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvU2hhcmVSZWNlaXZlci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFNoYXJlUmVjZWl2ZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgU2hhcmVSZWNlaXZlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2hhcmVSZWNlaXZlckNvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPFNoYXJlUmVjZWl2ZXI+IHtcbiAgcmV0dXJuIGFwcC5zaGFyZVJlY2VpdmVyLmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxTaGFyZVJlY2VpdmVyPjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgU3RhdHVzQmFyIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL1N0YXR1c0Jhci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFN0YXR1c0JhciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBTdGF0dXNCYXIgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0JhckNvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPFN0YXR1c0Jhcj4ge1xuICByZXR1cm4gYXBwLnN0YXR1c0Jhci5jb25zdHJ1Y3RvciBhcyBFeHRyYWN0Q29uc3RydWN0b3I8U3RhdHVzQmFyPjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgVmlld1JlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL3ZpZXctcmVnaXN0cnkvVmlld1JlZ2lzdHJ5LmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgVmlld1JlZ2lzdHJ5IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIFZpZXdSZWdpc3RyeSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Vmlld1JlZ2lzdHJ5Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8Vmlld1JlZ2lzdHJ5PiB7XG4gIHJldHVybiBhcHAudmlld1JlZ2lzdHJ5LmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxWaWV3UmVnaXN0cnk+O1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBXb3Jrc3BhY2VMZWFmSGlzdG9yeSB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy93b3Jrc3BhY2UtbGVhZi1oaXN0b3J5L1dvcmtzcGFjZUxlYWZIaXN0b3J5LmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlTGVhZkhpc3RvcnkgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlTGVhZkhpc3RvcnkgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtzcGFjZUxlYWZIaXN0b3J5Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlTGVhZkhpc3Rvcnk+IHtcbiAgY29uc3QgbGVhZiA9IGFwcC53b3Jrc3BhY2UuZ2V0TW9zdFJlY2VudExlYWYoKTtcbiAgaWYgKCFsZWFmKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyB3b3Jrc3BhY2UgbGVhZiBhdmFpbGFibGUgdG8gZXh0cmFjdCBXb3Jrc3BhY2VMZWFmSGlzdG9yeSBjb25zdHJ1Y3RvcicpO1xuICB9XG4gIHJldHVybiBsZWFmLmhpc3RvcnkuY29uc3RydWN0b3IgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZUxlYWZIaXN0b3J5Pjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxQbHVnaW4gfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9JbnRlcm5hbFBsdWdpbi5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEludGVybmFsUGx1Z2luIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIEludGVybmFsUGx1Z2luIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnRlcm5hbFBsdWdpbkNvbnN0cnVjdG9yPEluc3RhbmNlPihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxJbnRlcm5hbFBsdWdpbjxJbnN0YW5jZT4+IHtcbiAgY29uc3QgYW55UGx1Z2luID0gT2JqZWN0LnZhbHVlcyhhcHAuaW50ZXJuYWxQbHVnaW5zLnBsdWdpbnMpWzBdO1xuICBpZiAoIWFueVBsdWdpbikge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8gaW50ZXJuYWwgcGx1Z2luIGZvdW5kJyk7XG4gIH1cbiAgcmV0dXJuIGFueVBsdWdpbi5jb25zdHJ1Y3RvciBhcyBFeHRyYWN0Q29uc3RydWN0b3I8SW50ZXJuYWxQbHVnaW48SW5zdGFuY2U+Pjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxQbHVnaW5zIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvSW50ZXJuYWxQbHVnaW5zLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgSW50ZXJuYWxQbHVnaW5zIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIEludGVybmFsUGx1Z2lucyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW50ZXJuYWxQbHVnaW5zQ29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8SW50ZXJuYWxQbHVnaW5zPiB7XG4gIHJldHVybiBhcHAuaW50ZXJuYWxQbHVnaW5zLmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxJbnRlcm5hbFBsdWdpbnM+O1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBWaWV3VHlwZVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvdmlld3MvVmlld1R5cGVUeXBlLmQuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFZpZXdUeXBlVmlld01hcHBpbmcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvdmlld3MvVmlld1R5cGVWaWV3TWFwcGluZy5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIHZpZXcgY29uc3RydWN0b3IgYnkgdmlldyB0eXBlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHBhcmFtIHZpZXdUeXBlIC0gVGhlIHZpZXcgdHlwZS5cbiAqIEByZXR1cm5zIFRoZSB2aWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlPFRWaWV3VHlwZSBleHRlbmRzIFZpZXdUeXBlVHlwZT4oXG4gIGFwcDogQXBwLFxuICB2aWV3VHlwZTogVFZpZXdUeXBlXG4pOiBFeHRyYWN0Q29uc3RydWN0b3I8Vmlld1R5cGVWaWV3TWFwcGluZ1tUVmlld1R5cGVdPiB7XG4gIGNvbnN0IGxlYWYgPSBhcHAud29ya3NwYWNlLmNyZWF0ZUxlYWZJblRhYkdyb3VwKCk7XG4gIHRyeSB7XG4gICAgY29uc3Qgdmlld0NyZWF0b3IgPSBhcHAudmlld1JlZ2lzdHJ5LmdldFZpZXdDcmVhdG9yQnlUeXBlKHZpZXdUeXBlKTtcbiAgICBpZiAoIXZpZXdDcmVhdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZpZXcgY3JlYXRvciBub3QgZm91bmQnKTtcbiAgICB9XG4gICAgY29uc3QgdmlldyA9IHZpZXdDcmVhdG9yKGxlYWYpO1xuICAgIHJldHVybiB2aWV3LmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxWaWV3VHlwZVZpZXdNYXBwaW5nW1RWaWV3VHlwZV0+O1xuICB9IGZpbmFsbHkge1xuICAgIGxlYWYuZGV0YWNoKCk7XG4gIH1cbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgQWxsUHJvcGVydGllc1ZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9wcm9wZXJ0aWVzL0FsbFByb3BlcnRpZXNWaWV3LmQudHMnO1xuXG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEFsbFByb3BlcnRpZXNWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIEFsbFByb3BlcnRpZXNWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxQcm9wZXJ0aWVzVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPEFsbFByb3BlcnRpZXNWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuQWxsUHJvcGVydGllcyk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEF1ZGlvVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy92aWV3cy9BdWRpb1ZpZXcuZC50cyc7XG5cbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQXVkaW9WaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIEF1ZGlvVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXVkaW9WaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8QXVkaW9WaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuQXVkaW8pO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBCYWNrbGlua1ZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9iYWNrbGluay9CYWNrbGlua1ZpZXcuZC50cyc7XG5cbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQmFja2xpbmtWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIEJhY2tsaW5rVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFja2xpbmtWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8QmFja2xpbmtWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuQmFja2xpbmspO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBCYXNlc1ZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9iYXNlcy9CYXNlc1ZpZXcuZC50cyc7XG5cbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQmFzZXNWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIEJhc2VzVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZXNWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8QmFzZXNWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuQmFzZXMpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBCb29rbWFya3NWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvYm9va21hcmtzL0Jvb2ttYXJrc1ZpZXcuZC50cyc7XG5cbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQm9va21hcmtzVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBCb29rbWFya3NWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCb29rbWFya3NWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8Qm9va21hcmtzVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLkJvb2ttYXJrcyk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IENhbnZhc1ZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9jYW52YXMvQ2FudmFzVmlldy5kLnRzJztcblxuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBDYW52YXNWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIENhbnZhc1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhbnZhc1ZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxDYW52YXNWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuQ2FudmFzKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgRW1wdHlWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL3ZpZXdzL0VtcHR5Vmlldy5kLnRzJztcblxuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBFbXB0eVZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgRW1wdHlWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbXB0eVZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxFbXB0eVZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5FbXB0eSk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEZpbGVFeHBsb3JlclZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9maWxlLWV4cGxvcmVyL0ZpbGVFeHBsb3JlclZpZXcuZC50cyc7XG5cbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgRmlsZUV4cGxvcmVyVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBGaWxlRXhwbG9yZXJWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlRXhwbG9yZXJWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8RmlsZUV4cGxvcmVyVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLkZpbGVFeHBsb3Jlcik7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEZpbGVQcm9wZXJ0aWVzVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL3Byb3BlcnRpZXMvRmlsZVByb3BlcnRpZXNWaWV3LmQudHMnO1xuXG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEZpbGVQcm9wZXJ0aWVzVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBGaWxlUHJvcGVydGllc1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVQcm9wZXJ0aWVzVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPEZpbGVQcm9wZXJ0aWVzVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLkZpbGVQcm9wZXJ0aWVzKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgR3JhcGhWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvZ3JhcGgvR3JhcGhWaWV3LmQudHMnO1xuXG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEdyYXBoVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBHcmFwaFZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdyYXBoVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPEdyYXBoVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLkdyYXBoKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgSW1hZ2VWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL3ZpZXdzL0ltYWdlVmlldy5kLnRzJztcblxuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBJbWFnZVZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgSW1hZ2VWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbWFnZVZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxJbWFnZVZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5JbWFnZSk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IExvY2FsR3JhcGhWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvZ3JhcGgvTG9jYWxHcmFwaFZpZXcuZC50cyc7XG5cbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTG9jYWxHcmFwaFZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgTG9jYWxHcmFwaFZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2FsR3JhcGhWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8TG9jYWxHcmFwaFZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5Mb2NhbEdyYXBoKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgT3V0Z29pbmdMaW5rVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL291dGdvaW5nLWxpbmsvT3V0Z29pbmdMaW5rVmlldy5kLnRzJztcblxuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBPdXRnb2luZ0xpbmtWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIE91dGdvaW5nTGlua1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE91dGdvaW5nTGlua1ZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxPdXRnb2luZ0xpbmtWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuT3V0Z29pbmdMaW5rKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgT3V0bGluZVZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9vdXRsaW5lL091dGxpbmVWaWV3LmQudHMnO1xuXG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIE91dGxpbmVWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIE91dGxpbmVWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPdXRsaW5lVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPE91dGxpbmVWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuT3V0bGluZSk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFBkZlZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvdmlld3MvUGRmVmlldy5kLnRzJztcblxuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBQZGZWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIFBkZlZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBkZlZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxQZGZWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuUGRmKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgUmVsZWFzZU5vdGVzVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy92aWV3cy9SZWxlYXNlTm90ZXNWaWV3LmQudHMnO1xuXG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFJlbGVhc2VOb3Rlc1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgUmVsZWFzZU5vdGVzVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVsZWFzZU5vdGVzVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPFJlbGVhc2VOb3Rlc1ZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5SZWxlYXNlTm90ZXMpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBTZWFyY2hWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvZ2xvYmFsLXNlYXJjaC9TZWFyY2hWaWV3LmQudHMnO1xuXG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFNlYXJjaFZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgU2VhcmNoVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VhcmNoVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPFNlYXJjaFZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5TZWFyY2gpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBTeW5jVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL3N5bmMvU3luY1ZpZXcuZC50cyc7XG5cbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgU3luY1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgU3luY1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN5bmNWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8U3luY1ZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5TeW5jKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgVGFibGVWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvYmFzZXMvVGFibGVWaWV3LmQudHMnO1xuXG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFRhYmxlVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBUYWJsZVZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRhYmxlVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPFRhYmxlVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLlRhYmxlKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgVGFnVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy92aWV3cy9UYWdWaWV3LmQudHMnO1xuXG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFRhZ1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgVGFnVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFnVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPFRhZ1ZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5UYWcpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBWaWRlb1ZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvdmlld3MvVmlkZW9WaWV3LmQudHMnO1xuXG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFZpZGVvVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBWaWRlb1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZpZGVvVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPFZpZGVvVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLlZpZGVvKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgV2Vidmlld2VySGlzdG9yeVZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy93ZWJ2aWV3ZXIvV2Vidmlld2VySGlzdG9yeVZpZXcuZC50cyc7XG5cbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgV2Vidmlld2VySGlzdG9yeVZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgV2Vidmlld2VySGlzdG9yeVZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdlYnZpZXdlckhpc3RvcnlWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8V2Vidmlld2VySGlzdG9yeVZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5XZWJ2aWV3ZXJIaXN0b3J5KTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgV2Vidmlld2VyVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL3dlYnZpZXdlci9XZWJ2aWV3ZXJWaWV3LmQudHMnO1xuXG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFdlYnZpZXdlclZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgV2Vidmlld2VyVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2Vidmlld2VyVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPFdlYnZpZXdlclZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5XZWJ2aWV3ZXIpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBURmlsZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgZ2V0VEZpbGVDb25zdHJ1Y3RvciB9IGZyb20gJy4uL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRGaWxlQ29uc3RydWN0b3IudHMnO1xuaW1wb3J0IHsgcGFyZW50Rm9sZGVyUGF0aCB9IGZyb20gJy4uL3V0aWxzL1BhdGhVdGlscy50cyc7XG5pbXBvcnQgeyBjcmVhdGVURm9sZGVySW5zdGFuY2UgfSBmcm9tICcuL2NyZWF0ZVRGb2xkZXJJbnN0YW5jZS50cyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbmQgcHJvcGVybHkgaW5pdGlhbGl6ZXMgdGhlIGluc3RhbmNlIG9mIFRGaWxlIGV2ZW4gdGhlIHVuZGVybHlpbmcgZmlsZSBkb2VzIG5vdCBleGlzdC5cbiAqIFRoaXMgZG9lc24ndCBjcmVhdGUgdGhlIG1pc3NpbmcgZmlsZSBvbiB0aGUgZmlsZSBzeXN0ZW0uXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRGaWxlSW5zdGFuY2UoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFRGaWxlIHtcbiAgbGV0IGZpbGUgPSBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChwYXRoKTtcbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIGZpbGUgPSBuZXcgKGdldFRGaWxlQ29uc3RydWN0b3IoKSkoYXBwLnZhdWx0LCBwYXRoKTtcbiAgZmlsZS5wYXJlbnQgPSBjcmVhdGVURm9sZGVySW5zdGFuY2UoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKHBhdGgpKTtcbiAgZmlsZS5kZWxldGVkID0gdHJ1ZTtcbiAgcmV0dXJuIGZpbGU7XG59XG4iLCAiLyoqXG4gKiBHZXQgdGhlIHBhcmVudCBmb2xkZXIgcGF0aCBvZiBhIGdpdmVuIHBhdGguXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBnZXQgdGhlIHBhcmVudCBmb2xkZXIgcGF0aCBvZi5cbiAqIEByZXR1cm5zIFRoZSBwYXJlbnQgZm9sZGVyIHBhdGguXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcmVudEZvbGRlclBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhdGgucmVwbGFjZSgvXFwvP1teXFwvXSokLywgJycpIHx8ICcvJztcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgVEZvbGRlciB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgZ2V0VEZvbGRlckNvbnN0cnVjdG9yIH0gZnJvbSAnLi4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VEZvbGRlckNvbnN0cnVjdG9yLnRzJztcbmltcG9ydCB7IHBhcmVudEZvbGRlclBhdGggfSBmcm9tICcuLi91dGlscy9QYXRoVXRpbHMudHMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYW5kIHByb3Blcmx5IGluaXRpYWxpemVzIHRoZSBpbnN0YW5jZSBvZiBURm9sZGVyIGV2ZW4gdGhlIHVuZGVybHlpbmcgZm9sZGVyIGRvZXMgbm90IGV4aXN0LlxuICogVGhpcyBkb2Vzbid0IGNyZWF0ZSB0aGUgbWlzc2luZyBmb2xkZXIgb24gdGhlIGZpbGUgc3lzdGVtLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVURm9sZGVySW5zdGFuY2UoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFRGb2xkZXIge1xuICBsZXQgZm9sZGVyID0gYXBwLnZhdWx0LmdldEZvbGRlckJ5UGF0aChwYXRoKTtcbiAgaWYgKGZvbGRlcikge1xuICAgIHJldHVybiBmb2xkZXI7XG4gIH1cblxuICBmb2xkZXIgPSBuZXcgKGdldFRGb2xkZXJDb25zdHJ1Y3RvcigpKShhcHAudmF1bHQsIHBhdGgpO1xuICBmb2xkZXIucGFyZW50ID0gY3JlYXRlVEZvbGRlckluc3RhbmNlKGFwcCwgcGFyZW50Rm9sZGVyUGF0aChwYXRoKSk7XG4gIGZvbGRlci5kZWxldGVkID0gdHJ1ZTtcbiAgcmV0dXJuIGZvbGRlcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBEYXRhQWRhcHRlckV4IH0gZnJvbSAnLi4vLi4vaW50ZXJuYWxzL0RhdGFBZGFwdGVyRXguZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBpbnN0YW5jZSBvZiB0aGUgY3VycmVudCB7QGxpbmsgRGF0YUFkYXB0ZXJFeH0uXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBkYXRhIGFkYXB0ZXIgZXh0ZW5zaW9uLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRhQWRhcHRlckV4KGFwcDogQXBwKTogRGF0YUFkYXB0ZXJFeCB7XG4gIHJldHVybiBhcHAudmF1bHQuYWRhcHRlciBhcyBEYXRhQWRhcHRlckV4O1xufVxuIiwgImltcG9ydCB0eXBlIHsgTWVybWFpZCB9IGZyb20gJ21lcm1haWQnIHdpdGggeyAncmVzb2x1dGlvbi1tb2RlJzogJ2ltcG9ydCcgfTtcblxuaW1wb3J0IHsgbG9hZE1lcm1haWQgYXMgbG9hZE1lcm1haWRPcmlnaW5hbCB9IGZyb20gJ29ic2lkaWFuJztcblxuLyoqXG4gKiBMb2FkIE1lcm1haWQgYW5kIHJldHVybiBhIHByb21pc2UgdG8gdGhlIGdsb2JhbCBtZXJtYWlkIG9iamVjdC5cbiAqIENhbiBhbHNvIHVzZSBgd2luZG93Lm1lcm1haWRgIGFmdGVyIHRoaXMgcHJvbWlzZSByZXNvbHZlcyB0byBnZXQgdGhlIHNhbWUgcmVmZXJlbmNlLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBnbG9iYWwgYHdpbmRvdy5tZXJtYWlkYCBvYmplY3QuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9tZXJtYWlkLmpzLm9yZy8gfCBPZmZpY2lhbCBNZXJtYWlkIGRvY3VtZW50YXRpb259LlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRNZXJtYWlkKCk6IFByb21pc2U8TWVybWFpZD4ge1xuICByZXR1cm4gKGF3YWl0IGxvYWRNZXJtYWlkT3JpZ2luYWwoKSkgYXMgTWVybWFpZDtcbn1cbiIsICJpbXBvcnQgeyBsb2FkUGRmSnMgYXMgbG9hZFBkZkpzT3JpZ2luYWwgfSBmcm9tICdvYnNpZGlhbic7XG5cbi8qKlxuICogTG9hZCBQREYuanMgYW5kIHJldHVybiBhIHByb21pc2UgdG8gdGhlIGdsb2JhbCBwZGZqc0xpYiBvYmplY3QuXG4gKiBDYW4gYWxzbyB1c2UgYHdpbmRvdy5wZGZqc0xpYmAgYWZ0ZXIgdGhpcyBwcm9taXNlIHJlc29sdmVzIHRvIGdldCB0aGUgc2FtZSByZWZlcmVuY2UuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGdsb2JhbCBgd2luZG93LnBkZmpzTGliYCBvYmplY3QuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9tb3ppbGxhLmdpdGh1Yi5pby9wZGYuanMvIHwgT2ZmaWNpYWwgUERGLmpzIGRvY3VtZW50YXRpb259LlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRQZGZKcygpOiBQcm9taXNlPHR5cGVvZiBpbXBvcnQoJ3BkZmpzLWRpc3QnKT4ge1xuICByZXR1cm4gKGF3YWl0IGxvYWRQZGZKc09yaWdpbmFsKCkpIGFzIHR5cGVvZiBpbXBvcnQoJ3BkZmpzLWRpc3QnKTtcbn1cbiIsICJpbXBvcnQgeyBsb2FkUHJpc20gYXMgbG9hZFByaXNtT3JpZ2luYWwgfSBmcm9tICdvYnNpZGlhbic7XG5cbi8qKlxuICogTG9hZCBQcmlzbS5qcyBhbmQgcmV0dXJuIGEgcHJvbWlzZSB0byB0aGUgZ2xvYmFsIFByaXNtIG9iamVjdC5cbiAqIENhbiBhbHNvIHVzZSBgd2luZG93LlByaXNtYCBhZnRlciB0aGlzIHByb21pc2UgcmVzb2x2ZXMgdG8gZ2V0IHRoZSBzYW1lIHJlZmVyZW5jZS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgZ2xvYmFsIGB3aW5kb3cuUHJpc21gIG9iamVjdC5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL3ByaXNtanMuY29tLyB8IE9mZmljaWFsIFByaXNtIGRvY3VtZW50YXRpb259LlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRQcmlzbSgpOiBQcm9taXNlPHR5cGVvZiBpbXBvcnQoJ3ByaXNtanMnKT4ge1xuICByZXR1cm4gKGF3YWl0IGxvYWRQcmlzbU9yaWdpbmFsKCkpIGFzIHR5cGVvZiBpbXBvcnQoJ3ByaXNtanMnKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7XG4gIFJlZmVyZW5jZSxcbiAgUmVmZXJlbmNlQ2FjaGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSByZWZlcmVuY2UgaXMgYSByZWZlcmVuY2UgY2FjaGUuXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZSAtIFRoZSByZWZlcmVuY2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSByZWZlcmVuY2UgaXMgYSByZWZlcmVuY2UgY2FjaGUuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlOiBSZWZlcmVuY2UpOiByZWZlcmVuY2UgaXMgUmVmZXJlbmNlQ2FjaGUge1xuICByZXR1cm4gISEocmVmZXJlbmNlIGFzIFBhcnRpYWw8UmVmZXJlbmNlQ2FjaGU+KS5wb3NpdGlvbjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7XG4gIEVtYmVkQ2FjaGUsXG4gIFJlZmVyZW5jZVxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGlzUmVmZXJlbmNlQ2FjaGUgfSBmcm9tICcuL2lzUmVmZXJlbmNlQ2FjaGUudHMnO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSByZWZlcmVuY2UgaXMgYW4gZW1iZWQgY2FjaGUuXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZSAtIFRoZSByZWZlcmVuY2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSByZWZlcmVuY2UgaXMgYW4gZW1iZWQgY2FjaGUuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRW1iZWRDYWNoZShyZWZlcmVuY2U6IFJlZmVyZW5jZSk6IHJlZmVyZW5jZSBpcyBFbWJlZENhY2hlIHtcbiAgcmV0dXJuIGlzUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKSAmJiByZWZlcmVuY2Uub3JpZ2luYWxbMF0gPT09ICchJztcbn1cbiIsICJpbXBvcnQgdHlwZSB7XG4gIEZyb250bWF0dGVyTGlua0NhY2hlLFxuICBSZWZlcmVuY2Vcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSByZWZlcmVuY2UgaXMgYSBmcm9udG1hdHRlciBsaW5rIGNhY2hlLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2UgLSBUaGUgcmVmZXJlbmNlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcmVmZXJlbmNlIGlzIGEgZnJvbnRtYXR0ZXIgbGluayBjYWNoZS5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGcm9udG1hdHRlckxpbmtDYWNoZShyZWZlcmVuY2U6IFJlZmVyZW5jZSk6IHJlZmVyZW5jZSBpcyBGcm9udG1hdHRlckxpbmtDYWNoZSB7XG4gIHJldHVybiAhIShyZWZlcmVuY2UgYXMgUGFydGlhbDxGcm9udG1hdHRlckxpbmtDYWNoZT4pLmtleTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7XG4gIExpbmtDYWNoZSxcbiAgUmVmZXJlbmNlXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgaXNSZWZlcmVuY2VDYWNoZSB9IGZyb20gJy4vaXNSZWZlcmVuY2VDYWNoZS50cyc7XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHJlZmVyZW5jZSBpcyBhIGxpbmsgY2FjaGUuXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZSAtIFRoZSByZWZlcmVuY2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSByZWZlcmVuY2UgaXMgYSBsaW5rIGNhY2hlLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0xpbmtDYWNoZShyZWZlcmVuY2U6IFJlZmVyZW5jZSk6IHJlZmVyZW5jZSBpcyBMaW5rQ2FjaGUge1xuICByZXR1cm4gaXNSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpICYmIHJlZmVyZW5jZS5vcmlnaW5hbFswXSAhPT0gJyEnO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7O0FDUU8sSUFBTSxzQkFBTixNQUEyRDtBQUFBO0FBQUEsRUFFekQsT0FBeUIsb0JBQUksSUFBSTtBQUFBO0FBQUE7QUFB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b0JBQW9CLEtBQVUsTUFBcUI7QUFDakUsTUFBSSxPQUFPLElBQUksTUFBTSxjQUFjLElBQUk7QUFDdkMsTUFBSSxNQUFNO0FBQ1IsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPLEtBQUssb0JBQW9CLEdBQUcsSUFBSSxPQUFPLElBQUk7QUFDbEQsT0FBSyxTQUFTLHNCQUFzQixLQUFLLGlCQUFpQixJQUFJLENBQUM7QUFDL0QsT0FBSyxVQUFVO0FBQ2YsU0FBTztBQUNUOzs7QUdaTyxTQUFTLGlCQUFpQixLQUF5QjtBQUN4RCxTQUFPLElBQUksTUFBTTtBQUNuQjs7O0FDYkEsSUFBQUMsb0JBQW1EO0FBWW5ELGVBQXNCLGNBQWdDO0FBQ3BELFNBQVEsVUFBTSxrQkFBQUMsYUFBb0I7QUFDcEM7OztBQ2hCQSxJQUFBQyxvQkFBK0M7QUFZL0MsZUFBc0IsWUFBa0Q7QUFDdEUsU0FBUSxVQUFNLGtCQUFBQyxXQUFrQjtBQUNsQzs7O0FDZEEsSUFBQUMsb0JBQStDO0FBWS9DLGVBQXNCLFlBQStDO0FBQ25FLFNBQVEsVUFBTSxrQkFBQUMsV0FBa0I7QUFDbEM7OztBQ0FPLFNBQVMsaUJBQWlCLFdBQW1EO0FBQ2xGLFNBQU8sQ0FBQyxDQUFFLFVBQXNDO0FBQ2xEOzs7QUNBTyxTQUFTLGFBQWEsV0FBK0M7QUFDMUUsU0FBTyxpQkFBaUIsU0FBUyxLQUFLLFVBQVUsU0FBUyxDQUFDLE1BQU07QUFDbEU7OztBQ0pPLFNBQVMsdUJBQXVCLFdBQXlEO0FBQzlGLFNBQU8sQ0FBQyxDQUFFLFVBQTRDO0FBQ3hEOzs7QUNBTyxTQUFTLFlBQVksV0FBOEM7QUFDeEUsU0FBTyxpQkFBaUIsU0FBUyxLQUFLLFVBQVUsU0FBUyxDQUFDLE1BQU07QUFDbEU7IiwKICAibmFtZXMiOiBbImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImxvYWRNZXJtYWlkT3JpZ2luYWwiLCAiaW1wb3J0X29ic2lkaWFuIiwgImxvYWRQZGZKc09yaWdpbmFsIiwgImltcG9ydF9vYnNpZGlhbiIsICJsb2FkUHJpc21PcmlnaW5hbCJdCn0K
1276
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9pbmRleC50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NsYXNzZXMvQ3VzdG9tQXJyYXlEaWN0SW1wbC50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0YW50cy9GaWxlRXh0ZW5zaW9uLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RhbnRzL0ludGVybmFsUGx1Z2luTmFtZS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0YW50cy9WaWV3VHlwZS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2Jhc2VzL2dldEJhc2VzRW50cnlDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2Jhc2VzL2dldEJhc2VzRW50cnlHcm91cENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvYmFzZXMvZ2V0QmFzZXNRdWVyeVJlc3VsdENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvYmFzZXMvZ2V0QmFzZXNWaWV3Q29uZmlnQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9iYXNlcy9nZXRRdWVyeUNvbnRyb2xsZXJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0QWJzdHJhY3RUZXh0Q29tcG9uZW50Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9jb21wb25lbnRzL2dldEJhc2VDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0QnV0dG9uQ29tcG9uZW50Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9jb21wb25lbnRzL2dldENvbG9yQ29tcG9uZW50Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9jb21wb25lbnRzL2dldENvbXBvbmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvY29tcG9uZW50cy9nZXREcm9wZG93bkNvbXBvbmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvY29tcG9uZW50cy9nZXRFeHRyYUJ1dHRvbkNvbXBvbmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvY29tcG9uZW50cy9nZXRNb21lbnRGb3JtYXRDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0UHJvZ3Jlc3NCYXJDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0U2VhcmNoQ29tcG9uZW50Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9jb21wb25lbnRzL2dldFNlY3JldENvbXBvbmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvY29tcG9uZW50cy9nZXRTbGlkZXJDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0VGV4dEFyZWFDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0VGV4dENvbXBvbmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvY29tcG9uZW50cy9nZXRUb2dnbGVDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0VmFsdWVDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEFwcENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0Q2FwYWNpdG9yQWRhcHRlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0RWRpdG9yQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRFdmVudHNDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEZpbGVNYW5hZ2VyQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRGaWxlU3lzdGVtQWRhcHRlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0RnV6enlTdWdnZXN0TW9kYWxDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEhvdmVyUG9wb3ZlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0S2V5bWFwQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRNYXJrZG93blByZXZpZXdSZW5kZXJlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25QcmV2aWV3Vmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25SZW5kZXJDaGlsZENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25SZW5kZXJlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWVudUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWVudUl0ZW1Db25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1lbnVTZXBhcmF0b3JDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1ldGFkYXRhQ2FjaGVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1vZGFsQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXROb3RpY2VDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFJlbmRlckNvbnRleHRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFNjb3BlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTZWNyZXRTdG9yYWdlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTZXR0aW5nQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTZXR0aW5nR3JvdXBDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFNldHRpbmdUYWJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRBYnN0cmFjdEZpbGVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRhc2tzQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRURmlsZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VEZvbGRlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VmF1bHRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlQ29udGFpbmVyQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VGbG9hdGluZ0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlSXRlbUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlTGVhZkNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlTW9iaWxlRHJhd2VyQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VQYXJlbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZVJpYmJvbkNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlUm9vdENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlU2lkZWRvY2tDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZVNwbGl0Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VUYWJzQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VXaW5kb3dDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZhbHVlcy9nZXRCb29sZWFuVmFsdWVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZhbHVlcy9nZXREYXRlVmFsdWVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZhbHVlcy9nZXREdXJhdGlvblZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0RmlsZVZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0SFRNTFZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0SWNvblZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0SW1hZ2VWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldExpbmtWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldExpc3RWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldE5vdE51bGxWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldE51bGxWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldE51bWJlclZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0T2JqZWN0VmFsdWVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZhbHVlcy9nZXRSZWdFeHBWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldFJlbGF0aXZlRGF0ZVZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0U3RyaW5nVmFsdWVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZhbHVlcy9nZXRUYWdWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldFVybFZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0VmFsdWVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZpZXdzL2dldEVkaXRhYmxlRmlsZVZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZpZXdzL2dldE1hcmtkb3duVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRBcHBNZW51QmFyTWFuYWdlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRBcHBTZXR0aW5nQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldENsaUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRDb21tYW5kc0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRDdXN0b21DU1NDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0RHJhZ01hbmFnZXJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0RWRpdG9yU3VnZ2VzdHNDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0RW1iZWRSZWdpc3RyeUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRGb2xkTWFuYWdlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRGcmFtZURvbUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRIb3RrZXlNYW5hZ2VyQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldE1ldGFkYXRhVHlwZU1hbmFnZXJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0T2JzaWRpYW5ET01Db25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0UGx1Z2luc0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRSZWNlbnRGaWxlVHJhY2tlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRTaGFyZVJlY2VpdmVyQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldFN0YXR1c0JhckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRWaWV3UmVnaXN0cnlDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0V29ya3NwYWNlTGVhZkhpc3RvcnlDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9nZXRJbnRlcm5hbFBsdWdpbkNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL2dldEludGVybmFsUGx1Z2luc0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRBbGxQcm9wZXJ0aWVzVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRBdWRpb1ZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0QmFja2xpbmtWaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEJhc2VzVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRCb29rbWFya3NWaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldENhbnZhc1ZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0RW1wdHlWaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEZpbGVFeHBsb3JlclZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0RmlsZVByb3BlcnRpZXNWaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEdyYXBoVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRJbWFnZVZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0TG9jYWxHcmFwaFZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0T3V0Z29pbmdMaW5rVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRPdXRsaW5lVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRQZGZWaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldFJlbGVhc2VOb3Rlc1ZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0U2VhcmNoVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRTeW5jVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRUYWJsZVZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0VGFnVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRWaWRlb1ZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0V2Vidmlld2VySGlzdG9yeVZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0V2Vidmlld2VyVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvZnVuY3Rpb25zL2NyZWF0ZVRGaWxlSW5zdGFuY2UudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy91dGlscy9QYXRoVXRpbHMudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9mdW5jdGlvbnMvY3JlYXRlVEZvbGRlckluc3RhbmNlLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvZnVuY3Rpb25zL2dldERhdGFBZGFwdGVyRXgudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9mdW5jdGlvbnMvbG9hZE1lcm1haWQudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9mdW5jdGlvbnMvbG9hZFBkZkpzLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvZnVuY3Rpb25zL2xvYWRQcmlzbS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL3R5cGUtZ3VhcmRzL2lzUmVmZXJlbmNlQ2FjaGUudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy90eXBlLWd1YXJkcy9pc0VtYmVkQ2FjaGUudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy90eXBlLWd1YXJkcy9pc0Zyb250bWF0dGVyTGlua0NhY2hlLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvdHlwZS1ndWFyZHMvaXNMaW5rQ2FjaGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2NsYXNzZXMvQ3VzdG9tQXJyYXlEaWN0SW1wbC50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cy9GaWxlRXh0ZW5zaW9uLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RhbnRzL0ludGVybmFsUGx1Z2luTmFtZS50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2Jhc2VzL2dldEJhc2VzRW50cnlDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2Jhc2VzL2dldEJhc2VzRW50cnlHcm91cENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvYmFzZXMvZ2V0QmFzZXNRdWVyeVJlc3VsdENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvYmFzZXMvZ2V0QmFzZXNWaWV3Q29uZmlnQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9iYXNlcy9nZXRRdWVyeUNvbnRyb2xsZXJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0QWJzdHJhY3RUZXh0Q29tcG9uZW50Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9jb21wb25lbnRzL2dldEJhc2VDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0QnV0dG9uQ29tcG9uZW50Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9jb21wb25lbnRzL2dldENvbG9yQ29tcG9uZW50Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9jb21wb25lbnRzL2dldENvbXBvbmVudENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvY29tcG9uZW50cy9nZXREcm9wZG93bkNvbXBvbmVudENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvY29tcG9uZW50cy9nZXRFeHRyYUJ1dHRvbkNvbXBvbmVudENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvY29tcG9uZW50cy9nZXRNb21lbnRGb3JtYXRDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0UHJvZ3Jlc3NCYXJDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0U2VhcmNoQ29tcG9uZW50Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9jb21wb25lbnRzL2dldFNlY3JldENvbXBvbmVudENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvY29tcG9uZW50cy9nZXRTbGlkZXJDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0VGV4dEFyZWFDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0VGV4dENvbXBvbmVudENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvY29tcG9uZW50cy9nZXRUb2dnbGVDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2NvbXBvbmVudHMvZ2V0VmFsdWVDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEFwcENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0Q2FwYWNpdG9yQWRhcHRlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0RWRpdG9yQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRFdmVudHNDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEZpbGVNYW5hZ2VyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRGaWxlU3lzdGVtQWRhcHRlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0RnV6enlTdWdnZXN0TW9kYWxDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEhvdmVyUG9wb3ZlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0S2V5bWFwQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRNYXJrZG93blByZXZpZXdSZW5kZXJlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25QcmV2aWV3Vmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25SZW5kZXJDaGlsZENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25SZW5kZXJlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWVudUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWVudUl0ZW1Db25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1lbnVTZXBhcmF0b3JDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1ldGFkYXRhQ2FjaGVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1vZGFsQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXROb3RpY2VDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFJlbmRlckNvbnRleHRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFNjb3BlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTZWNyZXRTdG9yYWdlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTZXR0aW5nQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTZXR0aW5nR3JvdXBDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFNldHRpbmdUYWJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRBYnN0cmFjdEZpbGVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRhc2tzQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRURmlsZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VEZvbGRlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VmF1bHRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlQ29udGFpbmVyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VGbG9hdGluZ0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlSXRlbUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlTGVhZkNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlTW9iaWxlRHJhd2VyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VQYXJlbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZVJpYmJvbkNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlUm9vdENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlU2lkZWRvY2tDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZVNwbGl0Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VUYWJzQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VXaW5kb3dDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZhbHVlcy9nZXRCb29sZWFuVmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZhbHVlcy9nZXREYXRlVmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZhbHVlcy9nZXREdXJhdGlvblZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0RmlsZVZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0SFRNTFZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0SWNvblZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0SW1hZ2VWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldExpbmtWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldExpc3RWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldE5vdE51bGxWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldE51bGxWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldE51bWJlclZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0T2JqZWN0VmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZhbHVlcy9nZXRSZWdFeHBWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldFJlbGF0aXZlRGF0ZVZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0U3RyaW5nVmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZhbHVlcy9nZXRUYWdWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvdmFsdWVzL2dldFVybFZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy92YWx1ZXMvZ2V0VmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZpZXdzL2dldEVkaXRhYmxlRmlsZVZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL3ZpZXdzL2dldE1hcmtkb3duVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRBcHBNZW51QmFyTWFuYWdlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRBcHBTZXR0aW5nQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldENsaUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRDb21tYW5kc0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRDdXN0b21DU1NDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0RHJhZ01hbmFnZXJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0RWRpdG9yU3VnZ2VzdHNDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0RW1iZWRSZWdpc3RyeUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRGb2xkTWFuYWdlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRGcmFtZURvbUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRIb3RrZXlNYW5hZ2VyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldE1ldGFkYXRhVHlwZU1hbmFnZXJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0T2JzaWRpYW5ET01Db25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0UGx1Z2luc0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRSZWNlbnRGaWxlVHJhY2tlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRTaGFyZVJlY2VpdmVyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldFN0YXR1c0JhckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRWaWV3UmVnaXN0cnlDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0V29ya3NwYWNlTGVhZkhpc3RvcnlDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9nZXRJbnRlcm5hbFBsdWdpbkNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL2dldEludGVybmFsUGx1Z2luc0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRBbGxQcm9wZXJ0aWVzVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRBdWRpb1ZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0QmFja2xpbmtWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEJhc2VzVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRCb29rbWFya3NWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldENhbnZhc1ZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0RW1wdHlWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEZpbGVFeHBsb3JlclZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0RmlsZVByb3BlcnRpZXNWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEdyYXBoVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRJbWFnZVZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0TG9jYWxHcmFwaFZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0T3V0Z29pbmdMaW5rVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRPdXRsaW5lVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRQZGZWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldFJlbGVhc2VOb3Rlc1ZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0U2VhcmNoVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRTeW5jVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRUYWJsZVZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0VGFnVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRWaWRlb1ZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0V2Vidmlld2VySGlzdG9yeVZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0V2Vidmlld2VyVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vZnVuY3Rpb25zL2NyZWF0ZVRGaWxlSW5zdGFuY2UudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9mdW5jdGlvbnMvY3JlYXRlVEZvbGRlckluc3RhbmNlLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vZnVuY3Rpb25zL2dldERhdGFBZGFwdGVyRXgudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9mdW5jdGlvbnMvbG9hZE1lcm1haWQudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9mdW5jdGlvbnMvbG9hZFBkZkpzLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vZnVuY3Rpb25zL2xvYWRQcmlzbS50cyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGUtZ3VhcmRzL2lzRW1iZWRDYWNoZS50cyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGUtZ3VhcmRzL2lzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUudHMnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlLWd1YXJkcy9pc0xpbmtDYWNoZS50cyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGUtZ3VhcmRzL2lzUmVmZXJlbmNlQ2FjaGUudHMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9QYXRoVXRpbHMudHMnO1xuZXhwb3J0IHR5cGUgKiBmcm9tICcuLi8uLi9pbmRleC5kLnRzJztcbiIsICJpbXBvcnQgdHlwZSB7IEN1c3RvbUFycmF5RGljdCB9IGZyb20gJy4uLy4uL2ludGVybmFscy9jb2xsZWN0aW9ucy9DdXN0b21BcnJheURpY3QuZC5kLnRzJztcblxuLyoqXG4gKiBBIGRpY3Rpb25hcnkgdGhhdCBtYXBzIHN0cmluZyBrZXlzIHRvIGFycmF5cyBvZiB1bmlxdWUgdmFsdWVzLCBpbXBsZW1lbnRpbmcge0BsaW5rIEN1c3RvbUFycmF5RGljdH0uXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGNsYXNzIEN1c3RvbUFycmF5RGljdEltcGw8VD4gaW1wbGVtZW50cyBDdXN0b21BcnJheURpY3Q8VD4ge1xuICAvKiogSW50ZXJuYWwgbWFwIHN0b3Jpbmcga2V5LXRvLWFycmF5IG1hcHBpbmdzLiAqL1xuICBwdWJsaWMgZGF0YTogTWFwPHN0cmluZywgVFtdPiA9IG5ldyBNYXAoKTtcblxuICAvKipcbiAgICogQWRkIGEgdmFsdWUgdG8gdGhlIGFycmF5IGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4ga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleS5cbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGQoa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuZ2V0KGtleSk7XG4gICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgIHZhbHVlcyA9IFtdO1xuICAgICAgdGhpcy5kYXRhLnNldChrZXksIHZhbHVlcyk7XG4gICAgfVxuXG4gICAgaWYgKCF2YWx1ZXMuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbGwgdmFsdWVzIGZvciB0aGUgZ2l2ZW4ga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleSB0byBjbGVhci5cbiAgICovXG4gIHB1YmxpYyBjbGVhcihrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZGF0YS5kZWxldGUoa2V5KTtcbiAgfVxuXG4gIC8qKiBSZW1vdmUgYWxsIGtleXMgYW5kIHRoZWlyIHZhbHVlcy4gKi9cbiAgcHVibGljIGNsZWFyQWxsKCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YS5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgdGhlIGFycmF5IGZvciB0aGUgZ2l2ZW4ga2V5IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5LlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGV4aXN0cy5cbiAgICovXG4gIHB1YmxpYyBjb250YWlucyhrZXk6IHN0cmluZywgdmFsdWU6IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmdldChrZXkpPy5jb250YWlucyh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB0b3RhbCBudW1iZXIgb2YgdmFsdWVzIGFjcm9zcyBhbGwga2V5cy5cbiAgICpcbiAgICogQHJldHVybnMgVG90YWwgdmFsdWUgY291bnQuXG4gICAqL1xuICBwdWJsaWMgY291bnQoKTogbnVtYmVyIHtcbiAgICBsZXQgYW5zID0gMDtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLmtleXMoKSkge1xuICAgICAgYW5zICs9IHRoaXMuZ2V0KGtleSk/Lmxlbmd0aCA/PyAwO1xuICAgIH1cblxuICAgIHJldHVybiBhbnM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBhcnJheSBvZiB2YWx1ZXMgZm9yIHRoZSBnaXZlbiBrZXksIG9yIGBudWxsYCBpZiBub3QgZm91bmQuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5LlxuICAgKiBAcmV0dXJucyBBcnJheSBvZiB2YWx1ZXMsIG9yIGBudWxsYC5cbiAgICovXG4gIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcpOiBudWxsIHwgVFtdIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmdldChrZXkpIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBrZXlzIGluIHRoZSBkaWN0aW9uYXJ5LlxuICAgKlxuICAgKiBAcmV0dXJucyBBcnJheSBvZiBrZXlzLlxuICAgKi9cbiAgcHVibGljIGtleXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZGF0YS5rZXlzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIHNwZWNpZmljIHZhbHVlIGZyb20gdGhlIGFycmF5IGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4ga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleS5cbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICovXG4gIHB1YmxpYyByZW1vdmUoa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5nZXQoa2V5KTtcbiAgICBpZiAoIXZhbHVlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhbHVlcy5yZW1vdmUodmFsdWUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmNsZWFyKGtleSk7XG4gICAgfVxuICB9XG59XG4iLCAiLyoqXG4gKiBDb25zdGFudCBtYXBwaW5nIG9mIGZpbGUgZXh0ZW5zaW9uIGlkZW50aWZpZXJzIHJlY29nbml6ZWQgYW5kIHN1cHBvcnRlZCBieSBPYnNpZGlhbi5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgY29uc3QgRmlsZUV4dGVuc2lvbiA9IHtcbiAgXzNncDogJzNncCcsXG4gIGF2aWY6ICdhdmlmJyxcbiAgYm1wOiAnYm1wJyxcbiAgY2FudmFzOiAnY2FudmFzJyxcbiAgZmxhYzogJ2ZsYWMnLFxuICBnaWY6ICdnaWYnLFxuICBqcGVnOiAnanBlZycsXG4gIGpwZzogJ2pwZycsXG4gIG00YTogJ200YScsXG4gIG1kOiAnbWQnLFxuICBta3Y6ICdta3YnLFxuICBtb3Y6ICdtb3YnLFxuICBtcDM6ICdtcDMnLFxuICBtcDQ6ICdtcDQnLFxuICBvZ2E6ICdvZ2EnLFxuICBvZ2c6ICdvZ2cnLFxuICBvZ3Y6ICdvZ3YnLFxuICBvcHVzOiAnb3B1cycsXG4gIHBkZjogJ3BkZicsXG4gIHBuZzogJ3BuZycsXG4gIHN2ZzogJ3N2ZycsXG4gIHdhdjogJ3dhdicsXG4gIHdlYm06ICd3ZWJtJyxcbiAgd2VicDogJ3dlYnAnXG59IGFzIGNvbnN0O1xuIiwgIi8qKlxuICogQ29uc3RhbnQgbWFwcGluZyBvZiBpbnRlcm5hbCAoY29yZSkgcGx1Z2luIG5hbWUgaWRlbnRpZmllcnMgYnVuZGxlZCB3aXRoIE9ic2lkaWFuLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBjb25zdCBJbnRlcm5hbFBsdWdpbk5hbWUgPSB7XG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogQXVkaW8gcmVjb3JkZXIuXG4gICAqL1xuICBBdWRpb1JlY29yZGVyOiAnYXVkaW8tcmVjb3JkZXInLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IEJhY2tsaW5rcy5cbiAgICovXG4gIEJhY2tsaW5rOiAnYmFja2xpbmsnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IEJhc2VzLlxuICAgKi9cbiAgQmFzZXM6ICdiYXNlcycsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogQm9va21hcmtzLlxuICAgKi9cbiAgQm9va21hcmtzOiAnYm9va21hcmtzJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBDYW52YXMuXG4gICAqL1xuICBDYW52YXM6ICdjYW52YXMnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IENvbW1hbmQgcGFsZXR0ZS5cbiAgICovXG4gIENvbW1hbmRQYWxldHRlOiAnY29tbWFuZC1wYWxldHRlJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBEYWlseSBub3Rlcy5cbiAgICovXG4gIERhaWx5Tm90ZXM6ICdkYWlseS1ub3RlcycsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogKGhpZGRlbikuXG4gICAqL1xuICBFZGl0b3JTdGF0dXM6ICdlZGl0b3Itc3RhdHVzJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBGaWxlcy5cbiAgICovXG4gIEZpbGVFeHBsb3JlcjogJ2ZpbGUtZXhwbG9yZXInLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IEZpbGUgcmVjb3ZlcnkuXG4gICAqL1xuICBGaWxlUmVjb3Zlcnk6ICdmaWxlLXJlY292ZXJ5JyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBGb290bm90ZXMuXG4gICAqL1xuICBGb290bm90ZXM6ICdmb290bm90ZXMnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFNlYXJjaC5cbiAgICovXG4gIEdsb2JhbFNlYXJjaDogJ2dsb2JhbC1zZWFyY2gnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IEdyYXBoIHZpZXcuXG4gICAqL1xuICBHcmFwaDogJ2dyYXBoJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBGb3JtYXQgY29udmVydGVyLlxuICAgKi9cbiAgTWFya2Rvd25JbXBvcnRlcjogJ21hcmtkb3duLWltcG9ydGVyJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBOb3RlIGNvbXBvc2VyLlxuICAgKi9cbiAgTm90ZUNvbXBvc2VyOiAnbm90ZS1jb21wb3NlcicsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogT3V0Z29pbmcgbGlua3MuXG4gICAqL1xuICBPdXRnb2luZ0xpbms6ICdvdXRnb2luZy1saW5rJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBPdXRsaW5lLlxuICAgKi9cbiAgT3V0bGluZTogJ291dGxpbmUnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFBhZ2UgcHJldmlldy5cbiAgICovXG4gIFBhZ2VQcmV2aWV3OiAncGFnZS1wcmV2aWV3JyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBQcm9wZXJ0aWVzIHZpZXcuXG4gICAqL1xuICBQcm9wZXJ0aWVzOiAncHJvcGVydGllcycsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogUHVibGlzaC5cbiAgICovXG4gIFB1Ymxpc2g6ICdwdWJsaXNoJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBSYW5kb20gbm90ZS5cbiAgICovXG4gIFJhbmRvbU5vdGU6ICdyYW5kb20tbm90ZScsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogU2xhc2ggY29tbWFuZHMuXG4gICAqL1xuICBTbGFzaENvbW1hbmQ6ICdzbGFzaC1jb21tYW5kJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBTbGlkZXMuXG4gICAqL1xuICBTbGlkZXM6ICdzbGlkZXMnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFF1aWNrIFN3aXRjaGVyLlxuICAgKi9cbiAgU3dpdGNoZXI6ICdzd2l0Y2hlcicsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogU3luYy5cbiAgICovXG4gIFN5bmM6ICdzeW5jJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBUYWdzIHZpZXcuXG4gICAqL1xuICBUYWdQYW5lOiAndGFnLXBhbmUnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFRlbXBsYXRlcy5cbiAgICovXG4gIFRlbXBsYXRlczogJ3RlbXBsYXRlcycsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogV2ViIHZpZXdlci5cbiAgICovXG4gIFdlYnZpZXdlcjogJ3dlYnZpZXdlcicsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogV29yZCBjb3VudC5cbiAgICovXG4gIFdvcmRDb3VudDogJ3dvcmQtY291bnQnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFdvcmtzcGFjZXMuXG4gICAqL1xuICBXb3Jrc3BhY2VzOiAnd29ya3NwYWNlcycsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogVW5pcXVlIG5vdGUgY3JlYXRvci5cbiAgICovXG4gIFprUHJlZml4ZXI6ICd6ay1wcmVmaXhlcidcbn0gYXMgY29uc3Q7XG4iLCAiaW1wb3J0IHsgSW50ZXJuYWxQbHVnaW5OYW1lIH0gZnJvbSAnLi9JbnRlcm5hbFBsdWdpbk5hbWUudHMnO1xuXG4vKipcbiAqIENvbnN0YW50IG1hcHBpbmcgb2YgdmlldyB0eXBlIGlkZW50aWZpZXJzIHVzZWQgdG8gb3BlbiBhbmQgbWFuYWdlIGRpZmZlcmVudCBsZWFmIHZpZXdzIGluIE9ic2lkaWFuLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBjb25zdCBWaWV3VHlwZSA9IHtcbiAgQWxsUHJvcGVydGllczogJ2FsbC1wcm9wZXJ0aWVzJyxcbiAgQXVkaW86ICdhdWRpbycsXG4gIEJhY2tsaW5rOiBJbnRlcm5hbFBsdWdpbk5hbWUuQmFja2xpbmssXG4gIEJhc2VzOiBJbnRlcm5hbFBsdWdpbk5hbWUuQmFzZXMsXG4gIEJvb2ttYXJrczogSW50ZXJuYWxQbHVnaW5OYW1lLkJvb2ttYXJrcyxcbiAgQ2FudmFzOiBJbnRlcm5hbFBsdWdpbk5hbWUuQ2FudmFzLFxuICBFbXB0eTogJ2VtcHR5JyxcbiAgRmlsZUV4cGxvcmVyOiBJbnRlcm5hbFBsdWdpbk5hbWUuRmlsZUV4cGxvcmVyLFxuICBGaWxlUHJvcGVydGllczogJ2ZpbGUtcHJvcGVydGllcycsXG4gIEdyYXBoOiBJbnRlcm5hbFBsdWdpbk5hbWUuR3JhcGgsXG4gIEltYWdlOiAnaW1hZ2UnLFxuICBMb2NhbEdyYXBoOiAnbG9jYWxncmFwaCcsXG4gIE1hcmtkb3duOiAnbWFya2Rvd24nLFxuICBPdXRnb2luZ0xpbms6IEludGVybmFsUGx1Z2luTmFtZS5PdXRnb2luZ0xpbmssXG4gIE91dGxpbmU6IEludGVybmFsUGx1Z2luTmFtZS5PdXRsaW5lLFxuICBQZGY6ICdwZGYnLFxuICBSZWxlYXNlTm90ZXM6ICdyZWxlYXNlLW5vdGVzJyxcbiAgU2VhcmNoOiAnc2VhcmNoJyxcbiAgU3luYzogJ3N5bmMnLFxuICBUYWJsZTogJ3RhYmxlJyxcbiAgVGFnOiAndGFnJyxcbiAgVmlkZW86ICd2aWRlbycsXG4gIFdlYnZpZXdlcjogJ3dlYnZpZXdlcicsXG4gIFdlYnZpZXdlckhpc3Rvcnk6ICd3ZWJ2aWV3ZXItaGlzdG9yeSdcbn0gYXMgY29uc3Q7XG4iLCAiaW1wb3J0IHsgQmFzZXNFbnRyeSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEJhc2VzRW50cnkgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEJhc2VzRW50cnkgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJhc2VzRW50cnlDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8QmFzZXNFbnRyeT4ge1xuICByZXR1cm4gQmFzZXNFbnRyeSBhcyBFeHRyYWN0Q29uc3RydWN0b3I8QmFzZXNFbnRyeT47XG59XG4iLCAiaW1wb3J0IHsgQmFzZXNFbnRyeUdyb3VwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQmFzZXNFbnRyeUdyb3VwIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBCYXNlc0VudHJ5R3JvdXAgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJhc2VzRW50cnlHcm91cENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxCYXNlc0VudHJ5R3JvdXA+IHtcbiAgcmV0dXJuIEJhc2VzRW50cnlHcm91cCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8QmFzZXNFbnRyeUdyb3VwPjtcbn1cbiIsICJpbXBvcnQgeyBCYXNlc1F1ZXJ5UmVzdWx0IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQmFzZXNRdWVyeVJlc3VsdCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgQmFzZXNRdWVyeVJlc3VsdCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZXNRdWVyeVJlc3VsdENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxCYXNlc1F1ZXJ5UmVzdWx0PiB7XG4gIHJldHVybiBCYXNlc1F1ZXJ5UmVzdWx0IGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxCYXNlc1F1ZXJ5UmVzdWx0Pjtcbn1cbiIsICJpbXBvcnQgeyBCYXNlc1ZpZXdDb25maWcgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBCYXNlc1ZpZXdDb25maWcgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEJhc2VzVmlld0NvbmZpZyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZXNWaWV3Q29uZmlnQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPEJhc2VzVmlld0NvbmZpZz4ge1xuICByZXR1cm4gQmFzZXNWaWV3Q29uZmlnIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxCYXNlc1ZpZXdDb25maWc+O1xufVxuIiwgImltcG9ydCB7IFF1ZXJ5Q29udHJvbGxlciB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFF1ZXJ5Q29udHJvbGxlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgUXVlcnlDb250cm9sbGVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWVyeUNvbnRyb2xsZXJDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8UXVlcnlDb250cm9sbGVyPiB7XG4gIHJldHVybiBRdWVyeUNvbnRyb2xsZXIgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFF1ZXJ5Q29udHJvbGxlcj47XG59XG4iLCAiaW1wb3J0IHsgQWJzdHJhY3RUZXh0Q29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQWJzdHJhY3RUZXh0Q29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBBYnN0cmFjdFRleHRDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFic3RyYWN0VGV4dENvbXBvbmVudENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxcbiAgQWJzdHJhY3RUZXh0Q29tcG9uZW50PEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50PlxuPiB7XG4gIHJldHVybiBBYnN0cmFjdFRleHRDb21wb25lbnQgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFxuICAgIEFic3RyYWN0VGV4dENvbXBvbmVudDxIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudD5cbiAgPjtcbn1cbiIsICJpbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQmFzZUNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgQmFzZUNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZUNvbXBvbmVudENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxCYXNlQ29tcG9uZW50PiB7XG4gIHJldHVybiBCYXNlQ29tcG9uZW50IGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxCYXNlQ29tcG9uZW50Pjtcbn1cbiIsICJpbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBCdXR0b25Db21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEJ1dHRvbkNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QnV0dG9uQ29tcG9uZW50Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPEJ1dHRvbkNvbXBvbmVudD4ge1xuICByZXR1cm4gQnV0dG9uQ29tcG9uZW50IGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxCdXR0b25Db21wb25lbnQ+O1xufVxuIiwgImltcG9ydCB7IENvbG9yQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQ29sb3JDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIENvbG9yQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xvckNvbXBvbmVudENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxDb2xvckNvbXBvbmVudD4ge1xuICByZXR1cm4gQ29sb3JDb21wb25lbnQgYXMgRXh0cmFjdENvbnN0cnVjdG9yPENvbG9yQ29tcG9uZW50Pjtcbn1cbiIsICJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIENvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tcG9uZW50Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPENvbXBvbmVudD4ge1xuICByZXR1cm4gQ29tcG9uZW50IGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxDb21wb25lbnQ+O1xufVxuIiwgImltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgRHJvcGRvd25Db21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIERyb3Bkb3duQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREcm9wZG93bkNvbXBvbmVudENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxEcm9wZG93bkNvbXBvbmVudD4ge1xuICByZXR1cm4gRHJvcGRvd25Db21wb25lbnQgYXMgRXh0cmFjdENvbnN0cnVjdG9yPERyb3Bkb3duQ29tcG9uZW50Pjtcbn1cbiIsICJpbXBvcnQgeyBFeHRyYUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEV4dHJhQnV0dG9uQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBFeHRyYUJ1dHRvbkNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXh0cmFCdXR0b25Db21wb25lbnRDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8RXh0cmFCdXR0b25Db21wb25lbnQ+IHtcbiAgcmV0dXJuIEV4dHJhQnV0dG9uQ29tcG9uZW50IGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxFeHRyYUJ1dHRvbkNvbXBvbmVudD47XG59XG4iLCAiaW1wb3J0IHsgTW9tZW50Rm9ybWF0Q29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTW9tZW50Rm9ybWF0Q29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBNb21lbnRGb3JtYXRDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1vbWVudEZvcm1hdENvbXBvbmVudENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxNb21lbnRGb3JtYXRDb21wb25lbnQ+IHtcbiAgcmV0dXJuIE1vbWVudEZvcm1hdENvbXBvbmVudCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8TW9tZW50Rm9ybWF0Q29tcG9uZW50Pjtcbn1cbiIsICJpbXBvcnQgeyBQcm9ncmVzc0JhckNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFByb2dyZXNzQmFyQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBQcm9ncmVzc0JhckNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvZ3Jlc3NCYXJDb21wb25lbnRDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8UHJvZ3Jlc3NCYXJDb21wb25lbnQ+IHtcbiAgcmV0dXJuIFByb2dyZXNzQmFyQ29tcG9uZW50IGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxQcm9ncmVzc0JhckNvbXBvbmVudD47XG59XG4iLCAiaW1wb3J0IHsgU2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgU2VhcmNoQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBTZWFyY2hDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlYXJjaENvbXBvbmVudENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxTZWFyY2hDb21wb25lbnQ+IHtcbiAgcmV0dXJuIFNlYXJjaENvbXBvbmVudCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8U2VhcmNoQ29tcG9uZW50Pjtcbn1cbiIsICJpbXBvcnQgeyBTZWNyZXRDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBTZWNyZXRDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFNlY3JldENvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VjcmV0Q29tcG9uZW50Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFNlY3JldENvbXBvbmVudD4ge1xuICByZXR1cm4gU2VjcmV0Q29tcG9uZW50IGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxTZWNyZXRDb21wb25lbnQ+O1xufVxuIiwgImltcG9ydCB7IFNsaWRlckNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFNsaWRlckNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgU2xpZGVyQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTbGlkZXJDb21wb25lbnRDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8U2xpZGVyQ29tcG9uZW50PiB7XG4gIHJldHVybiBTbGlkZXJDb21wb25lbnQgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFNsaWRlckNvbXBvbmVudD47XG59XG4iLCAiaW1wb3J0IHsgVGV4dEFyZWFDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBUZXh0QXJlYUNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVGV4dEFyZWFDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHRBcmVhQ29tcG9uZW50Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFRleHRBcmVhQ29tcG9uZW50PiB7XG4gIHJldHVybiBUZXh0QXJlYUNvbXBvbmVudCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8VGV4dEFyZWFDb21wb25lbnQ+O1xufVxuIiwgImltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBUZXh0Q29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBUZXh0Q29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0Q29tcG9uZW50Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFRleHRDb21wb25lbnQ+IHtcbiAgcmV0dXJuIFRleHRDb21wb25lbnQgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFRleHRDb21wb25lbnQ+O1xufVxuIiwgImltcG9ydCB7IFRvZ2dsZUNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFRvZ2dsZUNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVG9nZ2xlQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb2dnbGVDb21wb25lbnRDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8VG9nZ2xlQ29tcG9uZW50PiB7XG4gIHJldHVybiBUb2dnbGVDb21wb25lbnQgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFRvZ2dsZUNvbXBvbmVudD47XG59XG4iLCAiaW1wb3J0IHsgVmFsdWVDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBWYWx1ZUNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVmFsdWVDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlQ29tcG9uZW50Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFZhbHVlQ29tcG9uZW50PHVua25vd24+PiB7XG4gIHJldHVybiBWYWx1ZUNvbXBvbmVudCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8VmFsdWVDb21wb25lbnQ8dW5rbm93bj4+O1xufVxuIiwgImltcG9ydCB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEFwcCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgQXBwIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBcHBDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8QXBwPiB7XG4gIHJldHVybiBBcHAgYXMgRXh0cmFjdENvbnN0cnVjdG9yPEFwcD47XG59XG4iLCAiaW1wb3J0IHsgQ2FwYWNpdG9yQWRhcHRlciB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIENhcGFjaXRvckFkYXB0ZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIENhcGFjaXRvckFkYXB0ZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhcGFjaXRvckFkYXB0ZXJDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8Q2FwYWNpdG9yQWRhcHRlcj4ge1xuICByZXR1cm4gQ2FwYWNpdG9yQWRhcHRlciBhcyBFeHRyYWN0Q29uc3RydWN0b3I8Q2FwYWNpdG9yQWRhcHRlcj47XG59XG4iLCAiaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgRWRpdG9yIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBFZGl0b3IgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVkaXRvckNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxFZGl0b3I+IHtcbiAgcmV0dXJuIEVkaXRvciBhcyBFeHRyYWN0Q29uc3RydWN0b3I8RWRpdG9yPjtcbn1cbiIsICJpbXBvcnQgeyBFdmVudHMgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBFdmVudHMgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEV2ZW50cyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXZlbnRzQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPEV2ZW50cz4ge1xuICByZXR1cm4gRXZlbnRzIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxFdmVudHM+O1xufVxuIiwgImltcG9ydCB7IEZpbGVNYW5hZ2VyIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgRmlsZU1hbmFnZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEZpbGVNYW5hZ2VyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlTWFuYWdlckNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxGaWxlTWFuYWdlcj4ge1xuICByZXR1cm4gRmlsZU1hbmFnZXIgYXMgRXh0cmFjdENvbnN0cnVjdG9yPEZpbGVNYW5hZ2VyPjtcbn1cbiIsICJpbXBvcnQgeyBGaWxlU3lzdGVtQWRhcHRlciB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEZpbGVTeXN0ZW1BZGFwdGVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBGaWxlU3lzdGVtQWRhcHRlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZVN5c3RlbUFkYXB0ZXJDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8RmlsZVN5c3RlbUFkYXB0ZXI+IHtcbiAgcmV0dXJuIEZpbGVTeXN0ZW1BZGFwdGVyIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxGaWxlU3lzdGVtQWRhcHRlcj47XG59XG4iLCAiaW1wb3J0IHsgRnV6enlTdWdnZXN0TW9kYWwgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBGdXp6eVN1Z2dlc3RNb2RhbCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgRnV6enlTdWdnZXN0TW9kYWwgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZ1enp5U3VnZ2VzdE1vZGFsQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPEZ1enp5U3VnZ2VzdE1vZGFsPHVua25vd24+PiB7XG4gIHJldHVybiBGdXp6eVN1Z2dlc3RNb2RhbCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8RnV6enlTdWdnZXN0TW9kYWw8dW5rbm93bj4+O1xufVxuIiwgImltcG9ydCB7IEhvdmVyUG9wb3ZlciB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEhvdmVyUG9wb3ZlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgSG92ZXJQb3BvdmVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIb3ZlclBvcG92ZXJDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8SG92ZXJQb3BvdmVyPiB7XG4gIHJldHVybiBIb3ZlclBvcG92ZXIgYXMgRXh0cmFjdENvbnN0cnVjdG9yPEhvdmVyUG9wb3Zlcj47XG59XG4iLCAiaW1wb3J0IHsgS2V5bWFwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgS2V5bWFwIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBLZXltYXAgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEtleW1hcENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxLZXltYXA+IHtcbiAgcmV0dXJuIEtleW1hcCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8S2V5bWFwPjtcbn1cbiIsICJpbXBvcnQgeyBNYXJrZG93blByZXZpZXdSZW5kZXJlciB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIE1hcmtkb3duUHJldmlld1JlbmRlcmVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBNYXJrZG93blByZXZpZXdSZW5kZXJlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25QcmV2aWV3UmVuZGVyZXJDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8TWFya2Rvd25QcmV2aWV3UmVuZGVyZXI+IHtcbiAgcmV0dXJuIE1hcmtkb3duUHJldmlld1JlbmRlcmVyIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxNYXJrZG93blByZXZpZXdSZW5kZXJlcj47XG59XG4iLCAiaW1wb3J0IHsgTWFya2Rvd25QcmV2aWV3VmlldyB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIE1hcmtkb3duUHJldmlld1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIE1hcmtkb3duUHJldmlld1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duUHJldmlld1ZpZXdDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8TWFya2Rvd25QcmV2aWV3Vmlldz4ge1xuICByZXR1cm4gTWFya2Rvd25QcmV2aWV3VmlldyBhcyB1bmtub3duIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxNYXJrZG93blByZXZpZXdWaWV3Pjtcbn1cbiIsICJpbXBvcnQgeyBNYXJrZG93blJlbmRlckNoaWxkIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTWFya2Rvd25SZW5kZXJDaGlsZCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgTWFya2Rvd25SZW5kZXJDaGlsZCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25SZW5kZXJDaGlsZENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxNYXJrZG93blJlbmRlckNoaWxkPiB7XG4gIHJldHVybiBNYXJrZG93blJlbmRlckNoaWxkIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxNYXJrZG93blJlbmRlckNoaWxkPjtcbn1cbiIsICJpbXBvcnQgeyBNYXJrZG93blJlbmRlcmVyIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTWFya2Rvd25SZW5kZXJlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgTWFya2Rvd25SZW5kZXJlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25SZW5kZXJlckNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxNYXJrZG93blJlbmRlcmVyPiB7XG4gIHJldHVybiBNYXJrZG93blJlbmRlcmVyIGFzIHVua25vd24gYXMgRXh0cmFjdENvbnN0cnVjdG9yPE1hcmtkb3duUmVuZGVyZXI+O1xufVxuIiwgImltcG9ydCB7IE1lbnUgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBNZW51IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBNZW51IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZW51Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPE1lbnU+IHtcbiAgcmV0dXJuIE1lbnUgYXMgRXh0cmFjdENvbnN0cnVjdG9yPE1lbnU+O1xufVxuIiwgImltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTWVudUl0ZW0gY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIE1lbnVJdGVtIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZW51SXRlbUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxNZW51SXRlbT4ge1xuICByZXR1cm4gTWVudUl0ZW0gYXMgdW5rbm93biBhcyBFeHRyYWN0Q29uc3RydWN0b3I8TWVudUl0ZW0+O1xufVxuIiwgImltcG9ydCB7IE1lbnVTZXBhcmF0b3IgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBNZW51U2VwYXJhdG9yIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBNZW51U2VwYXJhdG9yIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZW51U2VwYXJhdG9yQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPE1lbnVTZXBhcmF0b3I+IHtcbiAgcmV0dXJuIE1lbnVTZXBhcmF0b3IgYXMgRXh0cmFjdENvbnN0cnVjdG9yPE1lbnVTZXBhcmF0b3I+O1xufVxuIiwgImltcG9ydCB7IE1ldGFkYXRhQ2FjaGUgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBNZXRhZGF0YUNhY2hlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBNZXRhZGF0YUNhY2hlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZXRhZGF0YUNhY2hlQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPE1ldGFkYXRhQ2FjaGU+IHtcbiAgcmV0dXJuIE1ldGFkYXRhQ2FjaGUgYXMgRXh0cmFjdENvbnN0cnVjdG9yPE1ldGFkYXRhQ2FjaGU+O1xufVxuIiwgImltcG9ydCB7IE1vZGFsIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTW9kYWwgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIE1vZGFsIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNb2RhbENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxNb2RhbD4ge1xuICByZXR1cm4gTW9kYWwgYXMgRXh0cmFjdENvbnN0cnVjdG9yPE1vZGFsPjtcbn1cbiIsICJpbXBvcnQgeyBOb3RpY2UgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBOb3RpY2UgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIE5vdGljZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm90aWNlQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPE5vdGljZT4ge1xuICByZXR1cm4gTm90aWNlIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxOb3RpY2U+O1xufVxuIiwgImltcG9ydCB7IFJlbmRlckNvbnRleHQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBSZW5kZXJDb250ZXh0IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBSZW5kZXJDb250ZXh0IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZW5kZXJDb250ZXh0Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFJlbmRlckNvbnRleHQ+IHtcbiAgcmV0dXJuIFJlbmRlckNvbnRleHQgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFJlbmRlckNvbnRleHQ+O1xufVxuIiwgImltcG9ydCB7IFNjb3BlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgU2NvcGUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFNjb3BlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY29wZUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxTY29wZT4ge1xuICByZXR1cm4gU2NvcGUgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFNjb3BlPjtcbn1cbiIsICJpbXBvcnQgeyBTZWNyZXRTdG9yYWdlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgU2VjcmV0U3RvcmFnZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgU2VjcmV0U3RvcmFnZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VjcmV0U3RvcmFnZUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxTZWNyZXRTdG9yYWdlPiB7XG4gIHJldHVybiBTZWNyZXRTdG9yYWdlIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxTZWNyZXRTdG9yYWdlPjtcbn1cbiIsICJpbXBvcnQgeyBTZXR0aW5nIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgU2V0dGluZyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgU2V0dGluZyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2V0dGluZ0NvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxTZXR0aW5nPiB7XG4gIHJldHVybiBTZXR0aW5nIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxTZXR0aW5nPjtcbn1cbiIsICJpbXBvcnQgeyBTZXR0aW5nR3JvdXAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBTZXR0aW5nR3JvdXAgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFNldHRpbmdHcm91cCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2V0dGluZ0dyb3VwQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFNldHRpbmdHcm91cD4ge1xuICByZXR1cm4gU2V0dGluZ0dyb3VwIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxTZXR0aW5nR3JvdXA+O1xufVxuIiwgImltcG9ydCB7IFNldHRpbmdUYWIgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBTZXR0aW5nVGFiIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBTZXR0aW5nVGFiIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXR0aW5nVGFiQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFNldHRpbmdUYWI+IHtcbiAgcmV0dXJuIFNldHRpbmdUYWIgYXMgdW5rbm93biBhcyBFeHRyYWN0Q29uc3RydWN0b3I8U2V0dGluZ1RhYj47XG59XG4iLCAiaW1wb3J0IHsgVEFic3RyYWN0RmlsZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFRBYnN0cmFjdEZpbGUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFRBYnN0cmFjdEZpbGUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRBYnN0cmFjdEZpbGVDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8VEFic3RyYWN0RmlsZT4ge1xuICByZXR1cm4gVEFic3RyYWN0RmlsZSBhcyB1bmtub3duIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxUQWJzdHJhY3RGaWxlPjtcbn1cbiIsICJpbXBvcnQgeyBUYXNrcyB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3RvckJhc2UgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0NvbnN0cnVjdG9yQmFzZS5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFRhc2tzIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBUYXNrcyBjb25zdHJ1Y3Rvci5cbiAqIEByZW1hcmsgQ29uc3RydWN0b3IgaXMgYG51bGxgLiBTZWUge0BsaW5rIGh0dHBzOi8vZm9ydW0ub2JzaWRpYW4ubWQvdC9hcGktYnVnLXRhc2tzLWNsYXNzLzk4OTkzfS5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFza3NDb25zdHJ1Y3RvcigpOiBDb25zdHJ1Y3RvckJhc2U8W10sIFRhc2tzPiB7XG4gIHJldHVybiBUYXNrcyBhcyBDb25zdHJ1Y3RvckJhc2U8W10sIFRhc2tzPjtcbn1cbiIsICJpbXBvcnQgeyBURmlsZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFRGaWxlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBURmlsZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VEZpbGVDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8VEZpbGU+IHtcbiAgcmV0dXJuIFRGaWxlIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxURmlsZT47XG59XG4iLCAiaW1wb3J0IHsgVEZvbGRlciB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFRGb2xkZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFRGb2xkZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRGb2xkZXJDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8VEZvbGRlcj4ge1xuICByZXR1cm4gVEZvbGRlciBhcyBFeHRyYWN0Q29uc3RydWN0b3I8VEZvbGRlcj47XG59XG4iLCAiaW1wb3J0IHsgVmF1bHQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBWYXVsdCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVmF1bHQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhdWx0Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFZhdWx0PiB7XG4gIHJldHVybiBWYXVsdCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8VmF1bHQ+O1xufVxuIiwgImltcG9ydCB7IFdvcmtzcGFjZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFdvcmtzcGFjZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlPiB7XG4gIHJldHVybiBXb3Jrc3BhY2UgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZT47XG59XG4iLCAiaW1wb3J0IHsgV29ya3NwYWNlQ29udGFpbmVyIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlQ29udGFpbmVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBXb3Jrc3BhY2VDb250YWluZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtzcGFjZUNvbnRhaW5lckNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VDb250YWluZXI+IHtcbiAgcmV0dXJuIFdvcmtzcGFjZUNvbnRhaW5lciBhcyB1bmtub3duIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VDb250YWluZXI+O1xufVxuIiwgImltcG9ydCB7IFdvcmtzcGFjZUZsb2F0aW5nIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlRmxvYXRpbmcgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFdvcmtzcGFjZUZsb2F0aW5nIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VGbG9hdGluZ0NvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VGbG9hdGluZz4ge1xuICByZXR1cm4gV29ya3NwYWNlRmxvYXRpbmcgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZUZsb2F0aW5nPjtcbn1cbiIsICJpbXBvcnQgeyBXb3Jrc3BhY2VJdGVtIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlSXRlbSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlSXRlbSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlSXRlbUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VJdGVtPiB7XG4gIHJldHVybiBXb3Jrc3BhY2VJdGVtIGFzIHVua25vd24gYXMgRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZUl0ZW0+O1xufVxuIiwgImltcG9ydCB7IFdvcmtzcGFjZUxlYWYgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBXb3Jrc3BhY2VMZWFmIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBXb3Jrc3BhY2VMZWFmIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VMZWFmQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZUxlYWY+IHtcbiAgcmV0dXJuIFdvcmtzcGFjZUxlYWYgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZUxlYWY+O1xufVxuIiwgImltcG9ydCB7IFdvcmtzcGFjZU1vYmlsZURyYXdlciB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFdvcmtzcGFjZU1vYmlsZURyYXdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlTW9iaWxlRHJhd2VyIGNvbnN0cnVjdG9yLlxuICogQHJlbWFyayBDb25zdHJ1Y3RvciBpcyBgbnVsbGAuIFNlZSB7QGxpbmsgaHR0cHM6Ly9mb3J1bS5vYnNpZGlhbi5tZC90L2FwaS1idWctdGFza3MtY2xhc3MvOTg5OTN9LlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VNb2JpbGVEcmF3ZXJDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlTW9iaWxlRHJhd2VyPiB7XG4gIHJldHVybiBXb3Jrc3BhY2VNb2JpbGVEcmF3ZXIgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZU1vYmlsZURyYXdlcj47XG59XG4iLCAiaW1wb3J0IHsgV29ya3NwYWNlUGFyZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlUGFyZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBXb3Jrc3BhY2VQYXJlbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtzcGFjZVBhcmVudENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VQYXJlbnQ+IHtcbiAgcmV0dXJuIFdvcmtzcGFjZVBhcmVudCBhcyB1bmtub3duIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VQYXJlbnQ+O1xufVxuIiwgImltcG9ydCB7IFdvcmtzcGFjZVJpYmJvbiB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFdvcmtzcGFjZVJpYmJvbiBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlUmliYm9uIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VSaWJib25Db25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlUmliYm9uPiB7XG4gIHJldHVybiBXb3Jrc3BhY2VSaWJib24gYXMgRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZVJpYmJvbj47XG59XG4iLCAiaW1wb3J0IHsgV29ya3NwYWNlUm9vdCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFdvcmtzcGFjZVJvb3QgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFdvcmtzcGFjZVJvb3QgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtzcGFjZVJvb3RDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlUm9vdD4ge1xuICByZXR1cm4gV29ya3NwYWNlUm9vdCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlUm9vdD47XG59XG4iLCAiaW1wb3J0IHsgV29ya3NwYWNlU2lkZWRvY2sgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBXb3Jrc3BhY2VTaWRlZG9jayBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlU2lkZWRvY2sgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtzcGFjZVNpZGVkb2NrQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZVNpZGVkb2NrPiB7XG4gIHJldHVybiBXb3Jrc3BhY2VTaWRlZG9jayBhcyBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlU2lkZWRvY2s+O1xufVxuIiwgImltcG9ydCB7IFdvcmtzcGFjZVNwbGl0IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlU3BsaXQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFdvcmtzcGFjZVNwbGl0IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VTcGxpdENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VTcGxpdD4ge1xuICByZXR1cm4gV29ya3NwYWNlU3BsaXQgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZVNwbGl0Pjtcbn1cbiIsICJpbXBvcnQgeyBXb3Jrc3BhY2VUYWJzIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlVGFicyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlVGFicyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlVGFic0NvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VUYWJzPiB7XG4gIHJldHVybiBXb3Jrc3BhY2VUYWJzIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VUYWJzPjtcbn1cbiIsICJpbXBvcnQgeyBXb3Jrc3BhY2VXaW5kb3cgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBXb3Jrc3BhY2VXaW5kb3cgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFdvcmtzcGFjZVdpbmRvdyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlV2luZG93Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZVdpbmRvdz4ge1xuICByZXR1cm4gV29ya3NwYWNlV2luZG93IGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VXaW5kb3c+O1xufVxuIiwgImltcG9ydCB7IEJvb2xlYW5WYWx1ZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEJvb2xlYW5WYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgQm9vbGVhblZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCb29sZWFuVmFsdWVDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8Qm9vbGVhblZhbHVlPiB7XG4gIHJldHVybiBCb29sZWFuVmFsdWUgYXMgRXh0cmFjdENvbnN0cnVjdG9yPEJvb2xlYW5WYWx1ZT47XG59XG4iLCAiaW1wb3J0IHsgRGF0ZVZhbHVlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgRGF0ZVZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBEYXRlVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGVWYWx1ZUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxEYXRlVmFsdWU+IHtcbiAgcmV0dXJuIERhdGVWYWx1ZSBhcyBFeHRyYWN0Q29uc3RydWN0b3I8RGF0ZVZhbHVlPjtcbn1cbiIsICJpbXBvcnQgeyBEdXJhdGlvblZhbHVlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgRHVyYXRpb25WYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgRHVyYXRpb25WYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHVyYXRpb25WYWx1ZUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxEdXJhdGlvblZhbHVlPiB7XG4gIHJldHVybiBEdXJhdGlvblZhbHVlIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxEdXJhdGlvblZhbHVlPjtcbn1cbiIsICJpbXBvcnQgeyBGaWxlVmFsdWUgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBGaWxlVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEZpbGVWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZVZhbHVlQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPEZpbGVWYWx1ZT4ge1xuICByZXR1cm4gRmlsZVZhbHVlIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxGaWxlVmFsdWU+O1xufVxuIiwgImltcG9ydCB7IEhUTUxWYWx1ZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEhUTUxWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgSFRNTFZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIVE1MVmFsdWVDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8SFRNTFZhbHVlPiB7XG4gIHJldHVybiBIVE1MVmFsdWUgYXMgRXh0cmFjdENvbnN0cnVjdG9yPEhUTUxWYWx1ZT47XG59XG4iLCAiaW1wb3J0IHsgSWNvblZhbHVlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgSWNvblZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBJY29uVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEljb25WYWx1ZUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxJY29uVmFsdWU+IHtcbiAgcmV0dXJuIEljb25WYWx1ZSBhcyBFeHRyYWN0Q29uc3RydWN0b3I8SWNvblZhbHVlPjtcbn1cbiIsICJpbXBvcnQgeyBJbWFnZVZhbHVlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgSW1hZ2VWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgSW1hZ2VWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1hZ2VWYWx1ZUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxJbWFnZVZhbHVlPiB7XG4gIHJldHVybiBJbWFnZVZhbHVlIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxJbWFnZVZhbHVlPjtcbn1cbiIsICJpbXBvcnQgeyBMaW5rVmFsdWUgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBMaW5rVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIExpbmtWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGlua1ZhbHVlQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPExpbmtWYWx1ZT4ge1xuICByZXR1cm4gTGlua1ZhbHVlIGFzIHVua25vd24gYXMgRXh0cmFjdENvbnN0cnVjdG9yPExpbmtWYWx1ZT47XG59XG4iLCAiaW1wb3J0IHsgTGlzdFZhbHVlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTGlzdFZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBMaXN0VmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpc3RWYWx1ZUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxMaXN0VmFsdWU+IHtcbiAgcmV0dXJuIExpc3RWYWx1ZSBhcyBFeHRyYWN0Q29uc3RydWN0b3I8TGlzdFZhbHVlPjtcbn1cbiIsICJpbXBvcnQgeyBOb3ROdWxsVmFsdWUgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBOb3ROdWxsVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIE5vdE51bGxWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm90TnVsbFZhbHVlQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPE5vdE51bGxWYWx1ZT4ge1xuICByZXR1cm4gTm90TnVsbFZhbHVlIGFzIHVua25vd24gYXMgRXh0cmFjdENvbnN0cnVjdG9yPE5vdE51bGxWYWx1ZT47XG59XG4iLCAiaW1wb3J0IHsgTnVsbFZhbHVlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTnVsbFZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBOdWxsVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE51bGxWYWx1ZUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxOdWxsVmFsdWU+IHtcbiAgcmV0dXJuIE51bGxWYWx1ZSBhcyBFeHRyYWN0Q29uc3RydWN0b3I8TnVsbFZhbHVlPjtcbn1cbiIsICJpbXBvcnQgeyBOdW1iZXJWYWx1ZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIE51bWJlclZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBOdW1iZXJWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TnVtYmVyVmFsdWVDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8TnVtYmVyVmFsdWU+IHtcbiAgcmV0dXJuIE51bWJlclZhbHVlIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxOdW1iZXJWYWx1ZT47XG59XG4iLCAiaW1wb3J0IHsgT2JqZWN0VmFsdWUgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBPYmplY3RWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgT2JqZWN0VmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdFZhbHVlQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPE9iamVjdFZhbHVlPiB7XG4gIHJldHVybiBPYmplY3RWYWx1ZSBhcyBFeHRyYWN0Q29uc3RydWN0b3I8T2JqZWN0VmFsdWU+O1xufVxuIiwgImltcG9ydCB7IFJlZ0V4cFZhbHVlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgUmVnRXhwVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFJlZ0V4cFZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWdFeHBWYWx1ZUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxSZWdFeHBWYWx1ZT4ge1xuICByZXR1cm4gUmVnRXhwVmFsdWUgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFJlZ0V4cFZhbHVlPjtcbn1cbiIsICJpbXBvcnQgeyBSZWxhdGl2ZURhdGVWYWx1ZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFJlbGF0aXZlRGF0ZVZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBSZWxhdGl2ZURhdGVWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVsYXRpdmVEYXRlVmFsdWVDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8UmVsYXRpdmVEYXRlVmFsdWU+IHtcbiAgcmV0dXJuIFJlbGF0aXZlRGF0ZVZhbHVlIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxSZWxhdGl2ZURhdGVWYWx1ZT47XG59XG4iLCAiaW1wb3J0IHsgU3RyaW5nVmFsdWUgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBTdHJpbmdWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgU3RyaW5nVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0cmluZ1ZhbHVlQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFN0cmluZ1ZhbHVlPiB7XG4gIHJldHVybiBTdHJpbmdWYWx1ZSBhcyBFeHRyYWN0Q29uc3RydWN0b3I8U3RyaW5nVmFsdWU+O1xufVxuIiwgImltcG9ydCB7IFRhZ1ZhbHVlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgVGFnVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFRhZ1ZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYWdWYWx1ZUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxUYWdWYWx1ZT4ge1xuICByZXR1cm4gVGFnVmFsdWUgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFRhZ1ZhbHVlPjtcbn1cbiIsICJpbXBvcnQgeyBVcmxWYWx1ZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFVybFZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBVcmxWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXJsVmFsdWVDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8VXJsVmFsdWU+IHtcbiAgcmV0dXJuIFVybFZhbHVlIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxVcmxWYWx1ZT47XG59XG4iLCAiaW1wb3J0IHsgVmFsdWUgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFZhbHVlPiB7XG4gIHJldHVybiBWYWx1ZSBhcyB1bmtub3duIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxWYWx1ZT47XG59XG4iLCAiaW1wb3J0IHsgRWRpdGFibGVGaWxlVmlldyB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEVkaXRhYmxlRmlsZVZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEVkaXRhYmxlRmlsZVZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVkaXRhYmxlRmlsZVZpZXdDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8RWRpdGFibGVGaWxlVmlldz4ge1xuICByZXR1cm4gRWRpdGFibGVGaWxlVmlldyBhcyBFeHRyYWN0Q29uc3RydWN0b3I8RWRpdGFibGVGaWxlVmlldz47XG59XG4iLCAiaW1wb3J0IHsgTWFya2Rvd25WaWV3IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTWFya2Rvd25WaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBNYXJrZG93blZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duVmlld0NvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxNYXJrZG93blZpZXc+IHtcbiAgcmV0dXJuIE1hcmtkb3duVmlldyBhcyBFeHRyYWN0Q29uc3RydWN0b3I8TWFya2Rvd25WaWV3Pjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBBcHBNZW51QmFyTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9BcHBNZW51QmFyTWFuYWdlci5kLnRzJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBBcHBNZW51QmFyTWFuYWdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBBcHBNZW51QmFyTWFuYWdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwTWVudUJhck1hbmFnZXJDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxBcHBNZW51QmFyTWFuYWdlcj4ge1xuICByZXR1cm4gYXBwLmFwcE1lbnVCYXJNYW5hZ2VyLmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxBcHBNZW51QmFyTWFuYWdlcj47XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgQXBwU2V0dGluZyB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9BcHBTZXR0aW5nLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEFwcFNldHRpbmcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgQXBwU2V0dGluZyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwU2V0dGluZ0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPEFwcFNldHRpbmc+IHtcbiAgcmV0dXJuIGFwcC5zZXR0aW5nLmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxBcHBTZXR0aW5nPjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBDbGkgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY2xpL0NsaS5kLnRzJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBDbGkgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgQ2xpIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGlDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxDbGk+IHtcbiAgcmV0dXJuIGFwcC5jbGkuY29uc3RydWN0b3IgYXMgRXh0cmFjdENvbnN0cnVjdG9yPENsaT47XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgQ29tbWFuZHMgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29tbWFuZHMvQ29tbWFuZHMuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQ29tbWFuZHMgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgQ29tbWFuZHMgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbW1hbmRzQ29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8Q29tbWFuZHM+IHtcbiAgcmV0dXJuIGFwcC5jb21tYW5kcy5jb25zdHJ1Y3RvciBhcyBFeHRyYWN0Q29uc3RydWN0b3I8Q29tbWFuZHM+O1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21DU1MgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY3VzdG9tLWNzcy9DdXN0b21DU1MuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBDdXN0b21DU1MgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgQ3VzdG9tQ1NTIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXN0b21DU1NDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxDdXN0b21DU1M+IHtcbiAgcmV0dXJuIGFwcC5jdXN0b21Dc3MuY29uc3RydWN0b3IgYXMgRXh0cmFjdENvbnN0cnVjdG9yPEN1c3RvbUNTUz47XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IERyYWdNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2RyYWctbWFuYWdlci9EcmFnTWFuYWdlci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIERyYWdNYW5hZ2VyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIERyYWdNYW5hZ2VyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREcmFnTWFuYWdlckNvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPERyYWdNYW5hZ2VyPiB7XG4gIHJldHVybiBhcHAuZHJhZ01hbmFnZXIuY29uc3RydWN0b3IgYXMgRXh0cmFjdENvbnN0cnVjdG9yPERyYWdNYW5hZ2VyPjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgRWRpdG9yU3VnZ2VzdHMgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvRWRpdG9yU3VnZ2VzdHMuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBFZGl0b3JTdWdnZXN0cyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBFZGl0b3JTdWdnZXN0cyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWRpdG9yU3VnZ2VzdHNDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxFZGl0b3JTdWdnZXN0cz4ge1xuICByZXR1cm4gYXBwLndvcmtzcGFjZS5lZGl0b3JTdWdnZXN0LmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxFZGl0b3JTdWdnZXN0cz47XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEVtYmVkUmVnaXN0cnkgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvZW1iZWQtcmVnaXN0cnkvRW1iZWRSZWdpc3RyeS5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEVtYmVkUmVnaXN0cnkgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgRW1iZWRSZWdpc3RyeSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW1iZWRSZWdpc3RyeUNvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPEVtYmVkUmVnaXN0cnk+IHtcbiAgcmV0dXJuIGFwcC5lbWJlZFJlZ2lzdHJ5LmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxFbWJlZFJlZ2lzdHJ5Pjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgRm9sZE1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvRm9sZE1hbmFnZXIuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBGb2xkTWFuYWdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBGb2xkTWFuYWdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZE1hbmFnZXJDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxGb2xkTWFuYWdlcj4ge1xuICByZXR1cm4gYXBwLmZvbGRNYW5hZ2VyLmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxGb2xkTWFuYWdlcj47XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgRnJhbWVEb20gfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvRnJhbWVEb20uZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBGcmFtZURvbSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgRnJhbWVEb20gY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZyYW1lRG9tQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPEZyYW1lRG9tPiB7XG4gIHJldHVybiB3aW5kb3cuZnJhbWVEb20uY29uc3RydWN0b3IgYXMgRXh0cmFjdENvbnN0cnVjdG9yPEZyYW1lRG9tPjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgSG90a2V5TWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9ob3RrZXktbWFuYWdlci9Ib3RrZXlNYW5hZ2VyLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgSG90a2V5TWFuYWdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBIb3RrZXlNYW5hZ2VyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIb3RrZXlNYW5hZ2VyQ29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8SG90a2V5TWFuYWdlcj4ge1xuICByZXR1cm4gYXBwLmhvdGtleU1hbmFnZXIuY29uc3RydWN0b3IgYXMgRXh0cmFjdENvbnN0cnVjdG9yPEhvdGtleU1hbmFnZXI+O1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBNZXRhZGF0YVR5cGVNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL21ldGFkYXRhLXR5cGUtbWFuYWdlci9NZXRhZGF0YVR5cGVNYW5hZ2VyLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTWV0YWRhdGFUeXBlTWFuYWdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBNZXRhZGF0YVR5cGVNYW5hZ2VyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZXRhZGF0YVR5cGVNYW5hZ2VyQ29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8TWV0YWRhdGFUeXBlTWFuYWdlcj4ge1xuICByZXR1cm4gYXBwLm1ldGFkYXRhVHlwZU1hbmFnZXIuY29uc3RydWN0b3IgYXMgRXh0cmFjdENvbnN0cnVjdG9yPE1ldGFkYXRhVHlwZU1hbmFnZXI+O1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBPYnNpZGlhbkRPTSB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9PYnNpZGlhbkRPTS5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIE9ic2lkaWFuRE9NIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIE9ic2lkaWFuRE9NIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPYnNpZGlhbkRPTUNvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPE9ic2lkaWFuRE9NPiB7XG4gIHJldHVybiBhcHAuZG9tLmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxPYnNpZGlhbkRPTT47XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbnMgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvcGx1Z2lucy9QbHVnaW5zLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgUGx1Z2lucyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBQbHVnaW5zIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQbHVnaW5zQ29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8UGx1Z2lucz4ge1xuICByZXR1cm4gYXBwLnBsdWdpbnMuY29uc3RydWN0b3IgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFBsdWdpbnM+O1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBSZWNlbnRGaWxlVHJhY2tlciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9SZWNlbnRGaWxlVHJhY2tlci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFJlY2VudEZpbGVUcmFja2VyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIFJlY2VudEZpbGVUcmFja2VyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWNlbnRGaWxlVHJhY2tlckNvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPFJlY2VudEZpbGVUcmFja2VyPiB7XG4gIHJldHVybiBhcHAud29ya3NwYWNlLnJlY2VudEZpbGVUcmFja2VyLmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxSZWNlbnRGaWxlVHJhY2tlcj47XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFNoYXJlUmVjZWl2ZXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvU2hhcmVSZWNlaXZlci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFNoYXJlUmVjZWl2ZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgU2hhcmVSZWNlaXZlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2hhcmVSZWNlaXZlckNvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPFNoYXJlUmVjZWl2ZXI+IHtcbiAgcmV0dXJuIGFwcC5zaGFyZVJlY2VpdmVyLmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxTaGFyZVJlY2VpdmVyPjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgU3RhdHVzQmFyIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL1N0YXR1c0Jhci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFN0YXR1c0JhciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBTdGF0dXNCYXIgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0JhckNvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPFN0YXR1c0Jhcj4ge1xuICByZXR1cm4gYXBwLnN0YXR1c0Jhci5jb25zdHJ1Y3RvciBhcyBFeHRyYWN0Q29uc3RydWN0b3I8U3RhdHVzQmFyPjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgVmlld1JlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL3ZpZXctcmVnaXN0cnkvVmlld1JlZ2lzdHJ5LmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgVmlld1JlZ2lzdHJ5IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIFZpZXdSZWdpc3RyeSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Vmlld1JlZ2lzdHJ5Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8Vmlld1JlZ2lzdHJ5PiB7XG4gIHJldHVybiBhcHAudmlld1JlZ2lzdHJ5LmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxWaWV3UmVnaXN0cnk+O1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBXb3Jrc3BhY2VMZWFmSGlzdG9yeSB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy93b3Jrc3BhY2UtbGVhZi1oaXN0b3J5L1dvcmtzcGFjZUxlYWZIaXN0b3J5LmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlTGVhZkhpc3RvcnkgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlTGVhZkhpc3RvcnkgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtzcGFjZUxlYWZIaXN0b3J5Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlTGVhZkhpc3Rvcnk+IHtcbiAgY29uc3QgbGVhZiA9IGFwcC53b3Jrc3BhY2UuZ2V0TW9zdFJlY2VudExlYWYoKTtcbiAgaWYgKCFsZWFmKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyB3b3Jrc3BhY2UgbGVhZiBhdmFpbGFibGUgdG8gZXh0cmFjdCBXb3Jrc3BhY2VMZWFmSGlzdG9yeSBjb25zdHJ1Y3RvcicpO1xuICB9XG4gIHJldHVybiBsZWFmLmhpc3RvcnkuY29uc3RydWN0b3IgYXMgRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZUxlYWZIaXN0b3J5Pjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxQbHVnaW4gfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9JbnRlcm5hbFBsdWdpbi5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEludGVybmFsUGx1Z2luIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIEludGVybmFsUGx1Z2luIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnRlcm5hbFBsdWdpbkNvbnN0cnVjdG9yPEluc3RhbmNlPihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxJbnRlcm5hbFBsdWdpbjxJbnN0YW5jZT4+IHtcbiAgY29uc3QgYW55UGx1Z2luID0gT2JqZWN0LnZhbHVlcyhhcHAuaW50ZXJuYWxQbHVnaW5zLnBsdWdpbnMpWzBdO1xuICBpZiAoIWFueVBsdWdpbikge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8gaW50ZXJuYWwgcGx1Z2luIGZvdW5kJyk7XG4gIH1cbiAgcmV0dXJuIGFueVBsdWdpbi5jb25zdHJ1Y3RvciBhcyBFeHRyYWN0Q29uc3RydWN0b3I8SW50ZXJuYWxQbHVnaW48SW5zdGFuY2U+Pjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxQbHVnaW5zIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvSW50ZXJuYWxQbHVnaW5zLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgSW50ZXJuYWxQbHVnaW5zIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIEludGVybmFsUGx1Z2lucyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW50ZXJuYWxQbHVnaW5zQ29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8SW50ZXJuYWxQbHVnaW5zPiB7XG4gIHJldHVybiBhcHAuaW50ZXJuYWxQbHVnaW5zLmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxJbnRlcm5hbFBsdWdpbnM+O1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBWaWV3VHlwZVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvdmlld3MvVmlld1R5cGVUeXBlLmQuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFZpZXdUeXBlVmlld01hcHBpbmcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvdmlld3MvVmlld1R5cGVWaWV3TWFwcGluZy5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIHZpZXcgY29uc3RydWN0b3IgYnkgdmlldyB0eXBlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHBhcmFtIHZpZXdUeXBlIC0gVGhlIHZpZXcgdHlwZS5cbiAqIEByZXR1cm5zIFRoZSB2aWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlPFRWaWV3VHlwZSBleHRlbmRzIFZpZXdUeXBlVHlwZT4oXG4gIGFwcDogQXBwLFxuICB2aWV3VHlwZTogVFZpZXdUeXBlXG4pOiBFeHRyYWN0Q29uc3RydWN0b3I8Vmlld1R5cGVWaWV3TWFwcGluZ1tUVmlld1R5cGVdPiB7XG4gIGNvbnN0IGxlYWYgPSBhcHAud29ya3NwYWNlLmNyZWF0ZUxlYWZJblRhYkdyb3VwKCk7XG4gIHRyeSB7XG4gICAgY29uc3Qgdmlld0NyZWF0b3IgPSBhcHAudmlld1JlZ2lzdHJ5LmdldFZpZXdDcmVhdG9yQnlUeXBlKHZpZXdUeXBlKTtcbiAgICBpZiAoIXZpZXdDcmVhdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZpZXcgY3JlYXRvciBub3QgZm91bmQnKTtcbiAgICB9XG4gICAgY29uc3QgdmlldyA9IHZpZXdDcmVhdG9yKGxlYWYpO1xuICAgIHJldHVybiB2aWV3LmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxWaWV3VHlwZVZpZXdNYXBwaW5nW1RWaWV3VHlwZV0+O1xuICB9IGZpbmFsbHkge1xuICAgIGxlYWYuZGV0YWNoKCk7XG4gIH1cbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgQWxsUHJvcGVydGllc1ZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9wcm9wZXJ0aWVzL0FsbFByb3BlcnRpZXNWaWV3LmQudHMnO1xuXG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEFsbFByb3BlcnRpZXNWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIEFsbFByb3BlcnRpZXNWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxQcm9wZXJ0aWVzVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPEFsbFByb3BlcnRpZXNWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuQWxsUHJvcGVydGllcyk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEF1ZGlvVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy92aWV3cy9BdWRpb1ZpZXcuZC50cyc7XG5cbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQXVkaW9WaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIEF1ZGlvVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXVkaW9WaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8QXVkaW9WaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuQXVkaW8pO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBCYWNrbGlua1ZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9iYWNrbGluay9CYWNrbGlua1ZpZXcuZC50cyc7XG5cbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQmFja2xpbmtWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIEJhY2tsaW5rVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFja2xpbmtWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8QmFja2xpbmtWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuQmFja2xpbmspO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBCYXNlc1ZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9iYXNlcy9CYXNlc1ZpZXcuZC50cyc7XG5cbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQmFzZXNWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIEJhc2VzVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZXNWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8QmFzZXNWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuQmFzZXMpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBCb29rbWFya3NWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvYm9va21hcmtzL0Jvb2ttYXJrc1ZpZXcuZC50cyc7XG5cbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQm9va21hcmtzVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBCb29rbWFya3NWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCb29rbWFya3NWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8Qm9va21hcmtzVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLkJvb2ttYXJrcyk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IENhbnZhc1ZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9jYW52YXMvQ2FudmFzVmlldy5kLnRzJztcblxuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBDYW52YXNWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIENhbnZhc1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhbnZhc1ZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxDYW52YXNWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuQ2FudmFzKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgRW1wdHlWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL3ZpZXdzL0VtcHR5Vmlldy5kLnRzJztcblxuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBFbXB0eVZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgRW1wdHlWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbXB0eVZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxFbXB0eVZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5FbXB0eSk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEZpbGVFeHBsb3JlclZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9maWxlLWV4cGxvcmVyL0ZpbGVFeHBsb3JlclZpZXcuZC50cyc7XG5cbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgRmlsZUV4cGxvcmVyVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBGaWxlRXhwbG9yZXJWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlRXhwbG9yZXJWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8RmlsZUV4cGxvcmVyVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLkZpbGVFeHBsb3Jlcik7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEZpbGVQcm9wZXJ0aWVzVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL3Byb3BlcnRpZXMvRmlsZVByb3BlcnRpZXNWaWV3LmQudHMnO1xuXG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEZpbGVQcm9wZXJ0aWVzVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBGaWxlUHJvcGVydGllc1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVQcm9wZXJ0aWVzVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPEZpbGVQcm9wZXJ0aWVzVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLkZpbGVQcm9wZXJ0aWVzKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgR3JhcGhWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvZ3JhcGgvR3JhcGhWaWV3LmQudHMnO1xuXG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEdyYXBoVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBHcmFwaFZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdyYXBoVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPEdyYXBoVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLkdyYXBoKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgSW1hZ2VWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL3ZpZXdzL0ltYWdlVmlldy5kLnRzJztcblxuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBJbWFnZVZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgSW1hZ2VWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbWFnZVZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxJbWFnZVZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5JbWFnZSk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IExvY2FsR3JhcGhWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvZ3JhcGgvTG9jYWxHcmFwaFZpZXcuZC50cyc7XG5cbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTG9jYWxHcmFwaFZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgTG9jYWxHcmFwaFZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2FsR3JhcGhWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8TG9jYWxHcmFwaFZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5Mb2NhbEdyYXBoKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgT3V0Z29pbmdMaW5rVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL291dGdvaW5nLWxpbmsvT3V0Z29pbmdMaW5rVmlldy5kLnRzJztcblxuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBPdXRnb2luZ0xpbmtWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIE91dGdvaW5nTGlua1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE91dGdvaW5nTGlua1ZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxPdXRnb2luZ0xpbmtWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuT3V0Z29pbmdMaW5rKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgT3V0bGluZVZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9vdXRsaW5lL091dGxpbmVWaWV3LmQudHMnO1xuXG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIE91dGxpbmVWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIE91dGxpbmVWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPdXRsaW5lVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPE91dGxpbmVWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuT3V0bGluZSk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFBkZlZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvdmlld3MvUGRmVmlldy5kLnRzJztcblxuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBQZGZWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIFBkZlZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBkZlZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxQZGZWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuUGRmKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgUmVsZWFzZU5vdGVzVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy92aWV3cy9SZWxlYXNlTm90ZXNWaWV3LmQudHMnO1xuXG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFJlbGVhc2VOb3Rlc1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgUmVsZWFzZU5vdGVzVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVsZWFzZU5vdGVzVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPFJlbGVhc2VOb3Rlc1ZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5SZWxlYXNlTm90ZXMpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBTZWFyY2hWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvZ2xvYmFsLXNlYXJjaC9TZWFyY2hWaWV3LmQudHMnO1xuXG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFNlYXJjaFZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgU2VhcmNoVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VhcmNoVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPFNlYXJjaFZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5TZWFyY2gpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBTeW5jVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL3N5bmMvU3luY1ZpZXcuZC50cyc7XG5cbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgU3luY1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgU3luY1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN5bmNWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8U3luY1ZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5TeW5jKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgVGFibGVWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvYmFzZXMvVGFibGVWaWV3LmQudHMnO1xuXG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFRhYmxlVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBUYWJsZVZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRhYmxlVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPFRhYmxlVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLlRhYmxlKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgVGFnVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy92aWV3cy9UYWdWaWV3LmQudHMnO1xuXG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFRhZ1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgVGFnVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFnVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPFRhZ1ZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5UYWcpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBWaWRlb1ZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvdmlld3MvVmlkZW9WaWV3LmQudHMnO1xuXG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFZpZGVvVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBWaWRlb1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZpZGVvVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPFZpZGVvVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLlZpZGVvKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgV2Vidmlld2VySGlzdG9yeVZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy93ZWJ2aWV3ZXIvV2Vidmlld2VySGlzdG9yeVZpZXcuZC50cyc7XG5cbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgV2Vidmlld2VySGlzdG9yeVZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgV2Vidmlld2VySGlzdG9yeVZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdlYnZpZXdlckhpc3RvcnlWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8V2Vidmlld2VySGlzdG9yeVZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5XZWJ2aWV3ZXJIaXN0b3J5KTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgV2Vidmlld2VyVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL3dlYnZpZXdlci9XZWJ2aWV3ZXJWaWV3LmQudHMnO1xuXG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFdlYnZpZXdlclZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgV2Vidmlld2VyVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2Vidmlld2VyVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPFdlYnZpZXdlclZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5XZWJ2aWV3ZXIpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBURmlsZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgZ2V0VEZpbGVDb25zdHJ1Y3RvciB9IGZyb20gJy4uL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRGaWxlQ29uc3RydWN0b3IudHMnO1xuaW1wb3J0IHsgcGFyZW50Rm9sZGVyUGF0aCB9IGZyb20gJy4uL3V0aWxzL1BhdGhVdGlscy50cyc7XG5pbXBvcnQgeyBjcmVhdGVURm9sZGVySW5zdGFuY2UgfSBmcm9tICcuL2NyZWF0ZVRGb2xkZXJJbnN0YW5jZS50cyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbmQgcHJvcGVybHkgaW5pdGlhbGl6ZXMgdGhlIGluc3RhbmNlIG9mIFRGaWxlIGV2ZW4gdGhlIHVuZGVybHlpbmcgZmlsZSBkb2VzIG5vdCBleGlzdC5cbiAqIFRoaXMgZG9lc24ndCBjcmVhdGUgdGhlIG1pc3NpbmcgZmlsZSBvbiB0aGUgZmlsZSBzeXN0ZW0uXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRGaWxlSW5zdGFuY2UoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFRGaWxlIHtcbiAgbGV0IGZpbGUgPSBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChwYXRoKTtcbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIGZpbGUgPSBuZXcgKGdldFRGaWxlQ29uc3RydWN0b3IoKSkoYXBwLnZhdWx0LCBwYXRoKTtcbiAgZmlsZS5wYXJlbnQgPSBjcmVhdGVURm9sZGVySW5zdGFuY2UoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKHBhdGgpKTtcbiAgZmlsZS5kZWxldGVkID0gdHJ1ZTtcbiAgcmV0dXJuIGZpbGU7XG59XG4iLCAiLyoqXG4gKiBHZXQgdGhlIHBhcmVudCBmb2xkZXIgcGF0aCBvZiBhIGdpdmVuIHBhdGguXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBnZXQgdGhlIHBhcmVudCBmb2xkZXIgcGF0aCBvZi5cbiAqIEByZXR1cm5zIFRoZSBwYXJlbnQgZm9sZGVyIHBhdGguXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcmVudEZvbGRlclBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhdGgucmVwbGFjZSgvXFwvP1teL10qJC8sICcnKSB8fCAnLyc7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IFRGb2xkZXIgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGdldFRGb2xkZXJDb25zdHJ1Y3RvciB9IGZyb20gJy4uL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRGb2xkZXJDb25zdHJ1Y3Rvci50cyc7XG5pbXBvcnQgeyBwYXJlbnRGb2xkZXJQYXRoIH0gZnJvbSAnLi4vdXRpbHMvUGF0aFV0aWxzLnRzJztcblxuLyoqXG4gKiBDcmVhdGVzIGFuZCBwcm9wZXJseSBpbml0aWFsaXplcyB0aGUgaW5zdGFuY2Ugb2YgVEZvbGRlciBldmVuIHRoZSB1bmRlcmx5aW5nIGZvbGRlciBkb2VzIG5vdCBleGlzdC5cbiAqIFRoaXMgZG9lc24ndCBjcmVhdGUgdGhlIG1pc3NpbmcgZm9sZGVyIG9uIHRoZSBmaWxlIHN5c3RlbS5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVEZvbGRlckluc3RhbmNlKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBURm9sZGVyIHtcbiAgbGV0IGZvbGRlciA9IGFwcC52YXVsdC5nZXRGb2xkZXJCeVBhdGgocGF0aCk7XG4gIGlmIChmb2xkZXIpIHtcbiAgICByZXR1cm4gZm9sZGVyO1xuICB9XG5cbiAgZm9sZGVyID0gbmV3IChnZXRURm9sZGVyQ29uc3RydWN0b3IoKSkoYXBwLnZhdWx0LCBwYXRoKTtcbiAgZm9sZGVyLnBhcmVudCA9IGNyZWF0ZVRGb2xkZXJJbnN0YW5jZShhcHAsIHBhcmVudEZvbGRlclBhdGgocGF0aCkpO1xuICBmb2xkZXIuZGVsZXRlZCA9IHRydWU7XG4gIHJldHVybiBmb2xkZXI7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRGF0YUFkYXB0ZXJFeCB9IGZyb20gJy4uLy4uL2ludGVybmFscy9EYXRhQWRhcHRlckV4LmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgaW5zdGFuY2Ugb2YgdGhlIGN1cnJlbnQge0BsaW5rIERhdGFBZGFwdGVyRXh9LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgZGF0YSBhZGFwdGVyIGV4dGVuc2lvbi5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0YUFkYXB0ZXJFeChhcHA6IEFwcCk6IERhdGFBZGFwdGVyRXgge1xuICByZXR1cm4gYXBwLnZhdWx0LmFkYXB0ZXIgYXMgRGF0YUFkYXB0ZXJFeDtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IE1lcm1haWQgfSBmcm9tICdtZXJtYWlkJyB3aXRoIHsgJ3Jlc29sdXRpb24tbW9kZSc6ICdpbXBvcnQnIH07XG5cbmltcG9ydCB7IGxvYWRNZXJtYWlkIGFzIGxvYWRNZXJtYWlkT3JpZ2luYWwgfSBmcm9tICdvYnNpZGlhbic7XG5cbi8qKlxuICogTG9hZCBNZXJtYWlkIGFuZCByZXR1cm4gYSBwcm9taXNlIHRvIHRoZSBnbG9iYWwgbWVybWFpZCBvYmplY3QuXG4gKiBDYW4gYWxzbyB1c2UgYHdpbmRvdy5tZXJtYWlkYCBhZnRlciB0aGlzIHByb21pc2UgcmVzb2x2ZXMgdG8gZ2V0IHRoZSBzYW1lIHJlZmVyZW5jZS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgZ2xvYmFsIGB3aW5kb3cubWVybWFpZGAgb2JqZWN0LlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vbWVybWFpZC5qcy5vcmcvIHwgT2ZmaWNpYWwgTWVybWFpZCBkb2N1bWVudGF0aW9ufS5cbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkTWVybWFpZCgpOiBQcm9taXNlPE1lcm1haWQ+IHtcbiAgcmV0dXJuIChhd2FpdCBsb2FkTWVybWFpZE9yaWdpbmFsKCkpIGFzIE1lcm1haWQ7XG59XG4iLCAiaW1wb3J0IHsgbG9hZFBkZkpzIGFzIGxvYWRQZGZKc09yaWdpbmFsIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vKipcbiAqIExvYWQgUERGLmpzIGFuZCByZXR1cm4gYSBwcm9taXNlIHRvIHRoZSBnbG9iYWwgcGRmanNMaWIgb2JqZWN0LlxuICogQ2FuIGFsc28gdXNlIGB3aW5kb3cucGRmanNMaWJgIGFmdGVyIHRoaXMgcHJvbWlzZSByZXNvbHZlcyB0byBnZXQgdGhlIHNhbWUgcmVmZXJlbmNlLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBnbG9iYWwgYHdpbmRvdy5wZGZqc0xpYmAgb2JqZWN0LlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vbW96aWxsYS5naXRodWIuaW8vcGRmLmpzLyB8IE9mZmljaWFsIFBERi5qcyBkb2N1bWVudGF0aW9ufS5cbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkUGRmSnMoKTogUHJvbWlzZTx0eXBlb2YgaW1wb3J0KCdwZGZqcy1kaXN0Jyk+IHtcbiAgcmV0dXJuIChhd2FpdCBsb2FkUGRmSnNPcmlnaW5hbCgpKSBhcyB0eXBlb2YgaW1wb3J0KCdwZGZqcy1kaXN0Jyk7XG59XG4iLCAiaW1wb3J0IHsgbG9hZFByaXNtIGFzIGxvYWRQcmlzbU9yaWdpbmFsIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vKipcbiAqIExvYWQgUHJpc20uanMgYW5kIHJldHVybiBhIHByb21pc2UgdG8gdGhlIGdsb2JhbCBQcmlzbSBvYmplY3QuXG4gKiBDYW4gYWxzbyB1c2UgYHdpbmRvdy5QcmlzbWAgYWZ0ZXIgdGhpcyBwcm9taXNlIHJlc29sdmVzIHRvIGdldCB0aGUgc2FtZSByZWZlcmVuY2UuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGdsb2JhbCBgd2luZG93LlByaXNtYCBvYmplY3QuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9wcmlzbWpzLmNvbS8gfCBPZmZpY2lhbCBQcmlzbSBkb2N1bWVudGF0aW9ufS5cbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkUHJpc20oKTogUHJvbWlzZTx0eXBlb2YgaW1wb3J0KCdwcmlzbWpzJyk+IHtcbiAgcmV0dXJuIChhd2FpdCBsb2FkUHJpc21PcmlnaW5hbCgpKSBhcyB0eXBlb2YgaW1wb3J0KCdwcmlzbWpzJyk7XG59XG4iLCAiaW1wb3J0IHR5cGUge1xuICBSZWZlcmVuY2UsXG4gIFJlZmVyZW5jZUNhY2hlXG59IGZyb20gJ29ic2lkaWFuJztcblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgcmVmZXJlbmNlIGlzIGEgcmVmZXJlbmNlIGNhY2hlLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2UgLSBUaGUgcmVmZXJlbmNlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcmVmZXJlbmNlIGlzIGEgcmVmZXJlbmNlIGNhY2hlLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZTogUmVmZXJlbmNlKTogcmVmZXJlbmNlIGlzIFJlZmVyZW5jZUNhY2hlIHtcbiAgcmV0dXJuICEhKHJlZmVyZW5jZSBhcyBQYXJ0aWFsPFJlZmVyZW5jZUNhY2hlPikucG9zaXRpb247XG59XG4iLCAiaW1wb3J0IHR5cGUge1xuICBFbWJlZENhY2hlLFxuICBSZWZlcmVuY2Vcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBpc1JlZmVyZW5jZUNhY2hlIH0gZnJvbSAnLi9pc1JlZmVyZW5jZUNhY2hlLnRzJztcblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgcmVmZXJlbmNlIGlzIGFuIGVtYmVkIGNhY2hlLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2UgLSBUaGUgcmVmZXJlbmNlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcmVmZXJlbmNlIGlzIGFuIGVtYmVkIGNhY2hlLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0VtYmVkQ2FjaGUocmVmZXJlbmNlOiBSZWZlcmVuY2UpOiByZWZlcmVuY2UgaXMgRW1iZWRDYWNoZSB7XG4gIHJldHVybiBpc1JlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSkgJiYgcmVmZXJlbmNlLm9yaWdpbmFsWzBdID09PSAnISc7XG59XG4iLCAiaW1wb3J0IHR5cGUge1xuICBGcm9udG1hdHRlckxpbmtDYWNoZSxcbiAgUmVmZXJlbmNlXG59IGZyb20gJ29ic2lkaWFuJztcblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgcmVmZXJlbmNlIGlzIGEgZnJvbnRtYXR0ZXIgbGluayBjYWNoZS5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlIC0gVGhlIHJlZmVyZW5jZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHJlZmVyZW5jZSBpcyBhIGZyb250bWF0dGVyIGxpbmsgY2FjaGUuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUocmVmZXJlbmNlOiBSZWZlcmVuY2UpOiByZWZlcmVuY2UgaXMgRnJvbnRtYXR0ZXJMaW5rQ2FjaGUge1xuICByZXR1cm4gISEocmVmZXJlbmNlIGFzIFBhcnRpYWw8RnJvbnRtYXR0ZXJMaW5rQ2FjaGU+KS5rZXk7XG59XG4iLCAiaW1wb3J0IHR5cGUge1xuICBMaW5rQ2FjaGUsXG4gIFJlZmVyZW5jZVxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGlzUmVmZXJlbmNlQ2FjaGUgfSBmcm9tICcuL2lzUmVmZXJlbmNlQ2FjaGUudHMnO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSByZWZlcmVuY2UgaXMgYSBsaW5rIGNhY2hlLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2UgLSBUaGUgcmVmZXJlbmNlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcmVmZXJlbmNlIGlzIGEgbGluayBjYWNoZS5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMaW5rQ2FjaGUocmVmZXJlbmNlOiBSZWZlcmVuY2UpOiByZWZlcmVuY2UgaXMgTGlua0NhY2hlIHtcbiAgcmV0dXJuIGlzUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKSAmJiByZWZlcmVuY2Uub3JpZ2luYWxbMF0gIT09ICchJztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7OztBQ1FPLElBQU0sc0JBQU4sTUFBMkQ7QUFBQTtBQUFBLEVBRXpELE9BQXlCLG9CQUFJLElBQUk7QUFBQTtBQUFBO0FBQUE7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QUFBQyxvQkFBNkI7QUFZdEIsU0FBUyw2QkFBK0Q7QUFDN0UsU0FBTztBQUNUOzs7QUNkQSxJQUFBQyxvQkFBMEI7QUFZbkIsU0FBUywwQkFBeUQ7QUFDdkUsU0FBTztBQUNUOzs7QUNkQSxJQUFBQyxvQkFBOEI7QUFZdkIsU0FBUyw4QkFBaUU7QUFDL0UsU0FBTztBQUNUOzs7QUNkQSxJQUFBQyxvQkFBMEI7QUFZbkIsU0FBUywwQkFBeUQ7QUFDdkUsU0FBTztBQUNUOzs7QUNkQSxJQUFBQyxvQkFBMEI7QUFZbkIsU0FBUywwQkFBeUQ7QUFDdkUsU0FBTztBQUNUOzs7QUNkQSxJQUFBQyxvQkFBMEI7QUFZbkIsU0FBUywwQkFBeUQ7QUFDdkUsU0FBTztBQUNUOzs7QUNkQSxJQUFBQyxvQkFBMkI7QUFZcEIsU0FBUywyQkFBMkQ7QUFDekUsU0FBTztBQUNUOzs7QUNkQSxJQUFBQyxvQkFBMEI7QUFZbkIsU0FBUywwQkFBeUQ7QUFDdkUsU0FBTztBQUNUOzs7QUNkQSxJQUFBQyxvQkFBMEI7QUFZbkIsU0FBUywwQkFBeUQ7QUFDdkUsU0FBTztBQUNUOzs7QUNkQSxJQUFBQyxvQkFBNkI7QUFZdEIsU0FBUyw2QkFBK0Q7QUFDN0UsU0FBTztBQUNUOzs7QUNkQSxJQUFBQyxvQkFBMEI7QUFZbkIsU0FBUywwQkFBeUQ7QUFDdkUsU0FBTztBQUNUOzs7QUNkQSxJQUFBQyxvQkFBNEI7QUFZckIsU0FBUyw0QkFBNkQ7QUFDM0UsU0FBTztBQUNUOzs7QUNkQSxJQUFBQyxvQkFBNEI7QUFZckIsU0FBUyw0QkFBNkQ7QUFDM0UsU0FBTztBQUNUOzs7QUNkQSxJQUFBQyxvQkFBNEI7QUFZckIsU0FBUyw0QkFBNkQ7QUFDM0UsU0FBTztBQUNUOzs7QUNkQSxJQUFBQyxvQkFBa0M7QUFZM0IsU0FBUyxrQ0FBeUU7QUFDdkYsU0FBTztBQUNUOzs7QUNkQSxJQUFBQyxvQkFBNEI7QUFZckIsU0FBUyw0QkFBNkQ7QUFDM0UsU0FBTztBQUNUOzs7QUNkQSxJQUFBQyxvQkFBeUI7QUFZbEIsU0FBUyx5QkFBdUQ7QUFDckUs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QUFvQixLQUFVLE1BQXFCO0FBQ2pFLE1BQUksT0FBTyxJQUFJLE1BQU0sY0FBYyxJQUFJO0FBQ3ZDLE1BQUksTUFBTTtBQUNSLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxLQUFLLG9CQUFvQixHQUFHLElBQUksT0FBTyxJQUFJO0FBQ2xELE9BQUssU0FBUyxzQkFBc0IsS0FBSyxpQkFBaUIsSUFBSSxDQUFDO0FBQy9ELE9BQUssVUFBVTtBQUNmLFNBQU87QUFDVDs7O0FHWk8sU0FBUyxpQkFBaUIsS0FBeUI7QUFDeEQsU0FBTyxJQUFJLE1BQU07QUFDbkI7OztBQ2JBLElBQUFDLG9CQUFtRDtBQVluRCxlQUFzQixjQUFnQztBQUNwRCxTQUFRLFVBQU0sa0JBQUFDLGFBQW9CO0FBQ3BDOzs7QUNoQkEsSUFBQUMsb0JBQStDO0FBWS9DLGVBQXNCLFlBQWtEO0FBQ3RFLFNBQVEsVUFBTSxrQkFBQUMsV0FBa0I7QUFDbEM7OztBQ2RBLElBQUFDLG9CQUErQztBQVkvQyxlQUFzQixZQUErQztBQUNuRSxTQUFRLFVBQU0sa0JBQUFDLFdBQWtCO0FBQ2xDOzs7QUNBTyxTQUFTLGlCQUFpQixXQUFtRDtBQUNsRixTQUFPLENBQUMsQ0FBRSxVQUFzQztBQUNsRDs7O0FDQU8sU0FBUyxhQUFhLFdBQStDO0FBQzFFLFNBQU8saUJBQWlCLFNBQVMsS0FBSyxVQUFVLFNBQVMsQ0FBQyxNQUFNO0FBQ2xFOzs7QUNKTyxTQUFTLHVCQUF1QixXQUF5RDtBQUM5RixTQUFPLENBQUMsQ0FBRSxVQUE0QztBQUN4RDs7O0FDQU8sU0FBUyxZQUFZLFdBQThDO0FBQ3hFLFNBQU8saUJBQWlCLFNBQVMsS0FBSyxVQUFVLFNBQVMsQ0FBQyxNQUFNO0FBQ2xFOyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJsb2FkTWVybWFpZE9yaWdpbmFsIiwgImltcG9ydF9vYnNpZGlhbiIsICJsb2FkUGRmSnNPcmlnaW5hbCIsICJpbXBvcnRfb2JzaWRpYW4iLCAibG9hZFByaXNtT3JpZ2luYWwiXQp9Cg==