@tricoteuses/assemblee 1.1.12 → 1.2.1

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.
Files changed (75) hide show
  1. package/README.md +5 -5
  2. package/lib/bugs/agenda-00011.js +4 -5
  3. package/lib/bugs/agenda-00011.mjs +1 -2
  4. package/lib/bugs.js +3 -1
  5. package/lib/cleaners/actes_legislatifs.js +3 -1
  6. package/lib/cleaners/acteurs.js +3 -1
  7. package/lib/cleaners/amendements.js +3 -1
  8. package/lib/cleaners/documents.js +3 -1
  9. package/lib/cleaners/dossiers_legislatifs.js +3 -1
  10. package/lib/cleaners/reunions.js +2 -1
  11. package/lib/cleaners/scrutins.js +3 -1
  12. package/lib/cleaners/xml.js +3 -1
  13. package/lib/dates.js +1 -1
  14. package/lib/dossiers_legislatifs.d.ts +2 -1
  15. package/lib/dossiers_legislatifs.js +45 -2
  16. package/lib/dossiers_legislatifs.mjs +7 -1
  17. package/lib/file_systems.js +4 -1
  18. package/lib/index.d.ts +2 -2
  19. package/lib/index.js +13 -1
  20. package/lib/index.mjs +3 -3
  21. package/lib/inserters.js +3 -1
  22. package/lib/loaders.js +4 -1
  23. package/lib/parsers/documents.js +3 -1
  24. package/lib/parsers/recherche_amendements.js +4 -5
  25. package/lib/parsers/recherche_amendements.mjs +1 -2
  26. package/lib/raw_types/acteurs_et_organes.js +2 -1
  27. package/lib/raw_types/agendas.js +2 -1
  28. package/lib/raw_types/amendements.d.ts +1 -1
  29. package/lib/raw_types/amendements.js +3 -2
  30. package/lib/raw_types/amendements.mjs +2 -2
  31. package/lib/raw_types/debats.js +2 -1
  32. package/lib/raw_types/dossiers_legislatifs.d.ts +1 -0
  33. package/lib/raw_types/dossiers_legislatifs.js +4 -2
  34. package/lib/raw_types/dossiers_legislatifs.mjs +3 -2
  35. package/lib/raw_types/questions.d.ts +2 -0
  36. package/lib/raw_types/questions.js +6 -3
  37. package/lib/raw_types/questions.mjs +5 -3
  38. package/lib/raw_types/scrutins.js +2 -1
  39. package/lib/scripts/bugs_helper.js +3 -1
  40. package/lib/scripts/clean_reorganized_data.js +4 -2
  41. package/lib/scripts/clean_reorganized_data.mjs +2 -2
  42. package/lib/scripts/diff_amendements.js +3 -1
  43. package/lib/scripts/document_dossiers_legislatifs.js +2 -1
  44. package/lib/scripts/merge_scrutins.js +4 -1
  45. package/lib/scripts/parse_textes_lois.js +3 -1
  46. package/lib/scripts/raw_types_from_amendements.js +3 -1
  47. package/lib/scripts/reorganize_data.js +4 -2
  48. package/lib/scripts/reorganize_data.mjs +2 -2
  49. package/lib/scripts/retrieve_deputes_photos.js +4 -3
  50. package/lib/scripts/retrieve_deputes_photos.mjs +1 -2
  51. package/lib/scripts/retrieve_documents.js +342 -521
  52. package/lib/scripts/retrieve_documents.mjs +180 -229
  53. package/lib/scripts/retrieve_open_data.js +4 -4
  54. package/lib/scripts/retrieve_open_data.mjs +2 -3
  55. package/lib/scripts/retrieve_pending_amendments.js +3 -1
  56. package/lib/scripts/retrieve_senateurs_photos.js +5 -4
  57. package/lib/scripts/retrieve_senateurs_photos.mjs +2 -3
  58. package/lib/scripts/retrieve_textes_lois.js +7 -4
  59. package/lib/scripts/retrieve_textes_lois.mjs +5 -2
  60. package/lib/scripts/validate_json.js +3 -1
  61. package/lib/types/acteurs_et_organes.js +2 -1
  62. package/lib/types/agendas.js +2 -1
  63. package/lib/types/amendements.d.ts +1 -1
  64. package/lib/types/amendements.js +3 -2
  65. package/lib/types/amendements.mjs +2 -2
  66. package/lib/types/debats.js +2 -1
  67. package/lib/types/dossiers_legislatifs.js +2 -1
  68. package/lib/types/questions.d.ts +2 -0
  69. package/lib/types/questions.js +6 -3
  70. package/lib/types/questions.mjs +5 -3
  71. package/lib/types/scrutins.js +2 -1
  72. package/lib/urls.d.ts +8 -2
  73. package/lib/urls.js +153 -23
  74. package/lib/urls.mjs +97 -22
  75. package/package.json +4 -6
package/lib/index.mjs CHANGED
@@ -2,7 +2,7 @@
2
2
  // Note: This module can not contain NodeJS specific code (like `assert`).
3
3
  export { allFacets, allFollows, Facet, Follow } from "./api.mjs";
4
4
  export { dateFromNullableDateOrIsoString, dateFromYearMonthDayTimezoneString, displayDateFromLocalIsoString, existingDateToJson, formatRelativeFrenchTime, frenchDateFormat, frenchDateSameYearShortFormat, frenchDateWithoutDayOfWeekFromDateOrString, frenchTimeFormat, frenchTimeFromDateOrString, localIso8601StringFromDate, patchedDateToJson } from "./dates.mjs";
5
- export { commissionFondUidFromDossier, stateFromActePath, stateFromActes, stateFromDossier, statusFromCodierLibelle, walkActes, StatusOnly } from "./dossiers_legislatifs.mjs";
5
+ export { commissionFondUidFromDossier, stateFromActePath, stateFromActes, stateFromDossier, statusFromCodierLibelle, StatusOnly, walkActes, walkDocumentAndDivisions } from "./dossiers_legislatifs.mjs";
6
6
  export { insertActeurReferences, insertAmendementReferences, insertDocumentReferences, insertDossierReferences, insertOrganeReferences, insertReunionReferences, insertScrutinReferences } from "./inserters.mjs";
7
7
  export { shortNameFromOrgane } from "./organes.mjs";
8
8
  export { CodeActe } from "./shared_types/codes_actes.mjs";
@@ -12,5 +12,5 @@ export { EtatCycleDeVie, TypeReunion } from "./types/agendas.mjs";
12
12
  export { AvantAApres, Convert as AmendementsConvert, EtatAmendementLibelle, SortAmendement } from "./types/amendements.mjs";
13
13
  export { TypeActeLegislatif, TypeDocument } from "./types/dossiers_legislatifs.mjs";
14
14
  export { Legislature } from "./types/legislatures.mjs";
15
- export { DocumentUrlFormat, urlFromDocument, urlFromScrutin } from "./urls.mjs";
16
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhbGxGYWNldHMiLCJhbGxGb2xsb3dzIiwiRmFjZXQiLCJGb2xsb3ciLCJkYXRlRnJvbU51bGxhYmxlRGF0ZU9ySXNvU3RyaW5nIiwiZGF0ZUZyb21ZZWFyTW9udGhEYXlUaW1lem9uZVN0cmluZyIsImRpc3BsYXlEYXRlRnJvbUxvY2FsSXNvU3RyaW5nIiwiZXhpc3RpbmdEYXRlVG9Kc29uIiwiZm9ybWF0UmVsYXRpdmVGcmVuY2hUaW1lIiwiZnJlbmNoRGF0ZUZvcm1hdCIsImZyZW5jaERhdGVTYW1lWWVhclNob3J0Rm9ybWF0IiwiZnJlbmNoRGF0ZVdpdGhvdXREYXlPZldlZWtGcm9tRGF0ZU9yU3RyaW5nIiwiZnJlbmNoVGltZUZvcm1hdCIsImZyZW5jaFRpbWVGcm9tRGF0ZU9yU3RyaW5nIiwibG9jYWxJc284NjAxU3RyaW5nRnJvbURhdGUiLCJwYXRjaGVkRGF0ZVRvSnNvbiIsImNvbW1pc3Npb25Gb25kVWlkRnJvbURvc3NpZXIiLCJzdGF0ZUZyb21BY3RlUGF0aCIsInN0YXRlRnJvbUFjdGVzIiwic3RhdGVGcm9tRG9zc2llciIsInN0YXR1c0Zyb21Db2RpZXJMaWJlbGxlIiwid2Fsa0FjdGVzIiwiU3RhdHVzT25seSIsImluc2VydEFjdGV1clJlZmVyZW5jZXMiLCJpbnNlcnRBbWVuZGVtZW50UmVmZXJlbmNlcyIsImluc2VydERvY3VtZW50UmVmZXJlbmNlcyIsImluc2VydERvc3NpZXJSZWZlcmVuY2VzIiwiaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyIsImluc2VydFJldW5pb25SZWZlcmVuY2VzIiwiaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMiLCJzaG9ydE5hbWVGcm9tT3JnYW5lIiwiQ29kZUFjdGUiLCJjYXBpdGFsaXplRmlyc3RMZXR0ZXIiLCJ1bmNhcGl0YWxpemVGaXJzdExldHRlciIsIkNvZGVUeXBlT3JnYW5lIiwiVHlwZU1hbmRhdCIsIlR5cGVPcmdhbmUiLCJFdGF0Q3ljbGVEZVZpZSIsIlR5cGVSZXVuaW9uIiwiQXZhbnRBQXByZXMiLCJDb252ZXJ0IiwiQW1lbmRlbWVudHNDb252ZXJ0IiwiRXRhdEFtZW5kZW1lbnRMaWJlbGxlIiwiU29ydEFtZW5kZW1lbnQiLCJUeXBlQWN0ZUxlZ2lzbGF0aWYiLCJUeXBlRG9jdW1lbnQiLCJMZWdpc2xhdHVyZSIsIkRvY3VtZW50VXJsRm9ybWF0IiwidXJsRnJvbURvY3VtZW50IiwidXJsRnJvbVNjcnV0aW4iXSwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gTm90ZTogVGhpcyBtb2R1bGUgY2FuIG9ubHkgZXhwb3J0IGNsZWFuIGRhdGEgYW5kIGhlbHBlcnMgdG8gbWFuaXB1bGF0ZSBpdC5cbi8vIE5vdGU6IFRoaXMgbW9kdWxlIGNhbiBub3QgY29udGFpbiBOb2RlSlMgc3BlY2lmaWMgY29kZSAobGlrZSBgYXNzZXJ0YCkuXG5cbmV4cG9ydCB0eXBlIHtcbiAgU2VhcmNoUXVlcnksXG4gIFZhbGlkU2VhcmNoUXVlcnksXG4gIFZhbGlkU2VhcmNoUXVlcnlTaGFyZWRTdWJzZXQsXG59IGZyb20gXCIuL2FwaVwiXG5leHBvcnQgeyBhbGxGYWNldHMsIGFsbEZvbGxvd3MsIEZhY2V0LCBGb2xsb3cgfSBmcm9tIFwiLi9hcGlcIlxuZXhwb3J0IHtcbiAgZGF0ZUZyb21OdWxsYWJsZURhdGVPcklzb1N0cmluZyxcbiAgZGF0ZUZyb21ZZWFyTW9udGhEYXlUaW1lem9uZVN0cmluZyxcbiAgZGlzcGxheURhdGVGcm9tTG9jYWxJc29TdHJpbmcsXG4gIGV4aXN0aW5nRGF0ZVRvSnNvbixcbiAgZm9ybWF0UmVsYXRpdmVGcmVuY2hUaW1lLFxuICBmcmVuY2hEYXRlRm9ybWF0LFxuICBmcmVuY2hEYXRlU2FtZVllYXJTaG9ydEZvcm1hdCxcbiAgZnJlbmNoRGF0ZVdpdGhvdXREYXlPZldlZWtGcm9tRGF0ZU9yU3RyaW5nLFxuICBmcmVuY2hUaW1lRm9ybWF0LFxuICBmcmVuY2hUaW1lRnJvbURhdGVPclN0cmluZyxcbiAgbG9jYWxJc284NjAxU3RyaW5nRnJvbURhdGUsXG4gIHBhdGNoZWREYXRlVG9Kc29uLFxufSBmcm9tIFwiLi9kYXRlc1wiXG5leHBvcnQgdHlwZSB7IFN0YXR1cyB9IGZyb20gXCIuL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmV4cG9ydCB7XG4gIGNvbW1pc3Npb25Gb25kVWlkRnJvbURvc3NpZXIsXG4gIHN0YXRlRnJvbUFjdGVQYXRoLFxuICBzdGF0ZUZyb21BY3RlcyxcbiAgc3RhdGVGcm9tRG9zc2llcixcbiAgc3RhdHVzRnJvbUNvZGllckxpYmVsbGUsXG4gIHdhbGtBY3RlcyxcbiAgU3RhdHVzT25seSxcbn0gZnJvbSBcIi4vZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuZXhwb3J0IHR5cGUgeyBPdXRwdXREYXRhIH0gZnJvbSBcIi4vaW5zZXJ0ZXJzXCJcbmV4cG9ydCB7XG4gIGluc2VydEFjdGV1clJlZmVyZW5jZXMsXG4gIGluc2VydEFtZW5kZW1lbnRSZWZlcmVuY2VzLFxuICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMsXG4gIGluc2VydERvc3NpZXJSZWZlcmVuY2VzLFxuICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzLFxuICBpbnNlcnRSZXVuaW9uUmVmZXJlbmNlcyxcbiAgaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMsXG59IGZyb20gXCIuL2luc2VydGVyc1wiXG5leHBvcnQgeyBzaG9ydE5hbWVGcm9tT3JnYW5lIH0gZnJvbSBcIi4vb3JnYW5lc1wiXG5leHBvcnQgeyBDb2RlQWN0ZSB9IGZyb20gXCIuL3NoYXJlZF90eXBlcy9jb2Rlc19hY3Rlc1wiXG5leHBvcnQgeyBjYXBpdGFsaXplRmlyc3RMZXR0ZXIsIHVuY2FwaXRhbGl6ZUZpcnN0TGV0dGVyIH0gZnJvbSBcIi4vc3RyaW5nc1wiXG5leHBvcnQgdHlwZSB7XG4gIEFjdGV1cixcbiAgRXRhdENpdmlsLFxuICBNYW5kYXQsXG4gIE9yZ2FuZSxcbiAgUGhvdG8sXG59IGZyb20gXCIuL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5leHBvcnQge1xuICBDb2RlVHlwZU9yZ2FuZSxcbiAgVHlwZU1hbmRhdCxcbiAgVHlwZU9yZ2FuZSxcbn0gZnJvbSBcIi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmV4cG9ydCB0eXBlIHsgUmV1bmlvbiB9IGZyb20gXCIuL3R5cGVzL2FnZW5kYXNcIlxuZXhwb3J0IHsgRXRhdEN5Y2xlRGVWaWUsIFR5cGVSZXVuaW9uIH0gZnJvbSBcIi4vdHlwZXMvYWdlbmRhc1wiXG5leHBvcnQgdHlwZSB7XG4gIEFtZW5kZW1lbnQsXG4gIEV0YXRBbWVuZGVtZW50LFxuICBTaWduYXRhaXJlcyxcbn0gZnJvbSBcIi4vdHlwZXMvYW1lbmRlbWVudHNcIlxuZXhwb3J0IHtcbiAgQXZhbnRBQXByZXMsXG4gIENvbnZlcnQgYXMgQW1lbmRlbWVudHNDb252ZXJ0LFxuICBFdGF0QW1lbmRlbWVudExpYmVsbGUsXG4gIFNvcnRBbWVuZGVtZW50LFxufSBmcm9tIFwiLi90eXBlcy9hbWVuZGVtZW50c1wiXG5leHBvcnQgdHlwZSB7XG4gIEFjdGVMZWdpc2xhdGlmLFxuICBEaXZpc2lvbixcbiAgRG9jdW1lbnQsXG4gIERvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICBJbmZvSm8sXG59IGZyb20gXCIuL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmV4cG9ydCB7IFR5cGVBY3RlTGVnaXNsYXRpZiwgVHlwZURvY3VtZW50IH0gZnJvbSBcIi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuZXhwb3J0IHsgTGVnaXNsYXR1cmUgfSBmcm9tIFwiLi90eXBlcy9sZWdpc2xhdHVyZXNcIlxuZXhwb3J0IHR5cGUgeyBTY3J1dGluIH0gZnJvbSBcIi4vdHlwZXMvc2NydXRpbnNcIlxuZXhwb3J0IHsgRG9jdW1lbnRVcmxGb3JtYXQsIHVybEZyb21Eb2N1bWVudCwgdXJsRnJvbVNjcnV0aW4gfSBmcm9tIFwiLi91cmxzXCJcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBLFNBT1NBLFNBQVMsRUFBRUMsVUFBVSxFQUFFQyxLQUFLLEVBQUVDLE1BQU07QUFBQSxTQUUzQ0MsK0JBQStCLEVBQy9CQyxrQ0FBa0MsRUFDbENDLDZCQUE2QixFQUM3QkMsa0JBQWtCLEVBQ2xCQyx3QkFBd0IsRUFDeEJDLGdCQUFnQixFQUNoQkMsNkJBQTZCLEVBQzdCQywwQ0FBMEMsRUFDMUNDLGdCQUFnQixFQUNoQkMsMEJBQTBCLEVBQzFCQywwQkFBMEIsRUFDMUJDLGlCQUFpQjtBQUFBLFNBSWpCQyw0QkFBNEIsRUFDNUJDLGlCQUFpQixFQUNqQkMsY0FBYyxFQUNkQyxnQkFBZ0IsRUFDaEJDLHVCQUF1QixFQUN2QkMsU0FBUyxFQUNUQyxVQUFVO0FBQUEsU0FJVkMsc0JBQXNCLEVBQ3RCQywwQkFBMEIsRUFDMUJDLHdCQUF3QixFQUN4QkMsdUJBQXVCLEVBQ3ZCQyxzQkFBc0IsRUFDdEJDLHVCQUF1QixFQUN2QkMsdUJBQXVCO0FBQUEsU0FFaEJDLG1CQUFtQjtBQUFBLFNBQ25CQyxRQUFRO0FBQUEsU0FDUkMscUJBQXFCLEVBQUVDLHVCQUF1QjtBQUFBLFNBU3JEQyxjQUFjLEVBQ2RDLFVBQVUsRUFDVkMsVUFBVTtBQUFBLFNBR0hDLGNBQWMsRUFBRUMsV0FBVztBQUFBLFNBT2xDQyxXQUFXLEVBQ1hDLE9BQU8sSUFBSUMsa0JBQWtCLEVBQzdCQyxxQkFBcUIsRUFDckJDLGNBQWM7QUFBQSxTQVNQQyxrQkFBa0IsRUFBRUMsWUFBWTtBQUFBLFNBQ2hDQyxXQUFXO0FBQUEsU0FFWEMsaUJBQWlCLEVBQUVDLGVBQWUsRUFBRUMsY0FBYyJ9
15
+ export { DocumentUrlFormat, iterDocumentOrDivisionUrls, urlFromDocument, urlFromScrutin } from "./urls.mjs";
16
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhbGxGYWNldHMiLCJhbGxGb2xsb3dzIiwiRmFjZXQiLCJGb2xsb3ciLCJkYXRlRnJvbU51bGxhYmxlRGF0ZU9ySXNvU3RyaW5nIiwiZGF0ZUZyb21ZZWFyTW9udGhEYXlUaW1lem9uZVN0cmluZyIsImRpc3BsYXlEYXRlRnJvbUxvY2FsSXNvU3RyaW5nIiwiZXhpc3RpbmdEYXRlVG9Kc29uIiwiZm9ybWF0UmVsYXRpdmVGcmVuY2hUaW1lIiwiZnJlbmNoRGF0ZUZvcm1hdCIsImZyZW5jaERhdGVTYW1lWWVhclNob3J0Rm9ybWF0IiwiZnJlbmNoRGF0ZVdpdGhvdXREYXlPZldlZWtGcm9tRGF0ZU9yU3RyaW5nIiwiZnJlbmNoVGltZUZvcm1hdCIsImZyZW5jaFRpbWVGcm9tRGF0ZU9yU3RyaW5nIiwibG9jYWxJc284NjAxU3RyaW5nRnJvbURhdGUiLCJwYXRjaGVkRGF0ZVRvSnNvbiIsImNvbW1pc3Npb25Gb25kVWlkRnJvbURvc3NpZXIiLCJzdGF0ZUZyb21BY3RlUGF0aCIsInN0YXRlRnJvbUFjdGVzIiwic3RhdGVGcm9tRG9zc2llciIsInN0YXR1c0Zyb21Db2RpZXJMaWJlbGxlIiwiU3RhdHVzT25seSIsIndhbGtBY3RlcyIsIndhbGtEb2N1bWVudEFuZERpdmlzaW9ucyIsImluc2VydEFjdGV1clJlZmVyZW5jZXMiLCJpbnNlcnRBbWVuZGVtZW50UmVmZXJlbmNlcyIsImluc2VydERvY3VtZW50UmVmZXJlbmNlcyIsImluc2VydERvc3NpZXJSZWZlcmVuY2VzIiwiaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyIsImluc2VydFJldW5pb25SZWZlcmVuY2VzIiwiaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMiLCJzaG9ydE5hbWVGcm9tT3JnYW5lIiwiQ29kZUFjdGUiLCJjYXBpdGFsaXplRmlyc3RMZXR0ZXIiLCJ1bmNhcGl0YWxpemVGaXJzdExldHRlciIsIkNvZGVUeXBlT3JnYW5lIiwiVHlwZU1hbmRhdCIsIlR5cGVPcmdhbmUiLCJFdGF0Q3ljbGVEZVZpZSIsIlR5cGVSZXVuaW9uIiwiQXZhbnRBQXByZXMiLCJDb252ZXJ0IiwiQW1lbmRlbWVudHNDb252ZXJ0IiwiRXRhdEFtZW5kZW1lbnRMaWJlbGxlIiwiU29ydEFtZW5kZW1lbnQiLCJUeXBlQWN0ZUxlZ2lzbGF0aWYiLCJUeXBlRG9jdW1lbnQiLCJMZWdpc2xhdHVyZSIsIkRvY3VtZW50VXJsRm9ybWF0IiwiaXRlckRvY3VtZW50T3JEaXZpc2lvblVybHMiLCJ1cmxGcm9tRG9jdW1lbnQiLCJ1cmxGcm9tU2NydXRpbiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBOb3RlOiBUaGlzIG1vZHVsZSBjYW4gb25seSBleHBvcnQgY2xlYW4gZGF0YSBhbmQgaGVscGVycyB0byBtYW5pcHVsYXRlIGl0LlxuLy8gTm90ZTogVGhpcyBtb2R1bGUgY2FuIG5vdCBjb250YWluIE5vZGVKUyBzcGVjaWZpYyBjb2RlIChsaWtlIGBhc3NlcnRgKS5cblxuZXhwb3J0IHR5cGUge1xuICBTZWFyY2hRdWVyeSxcbiAgVmFsaWRTZWFyY2hRdWVyeSxcbiAgVmFsaWRTZWFyY2hRdWVyeVNoYXJlZFN1YnNldCxcbn0gZnJvbSBcIi4vYXBpXCJcbmV4cG9ydCB7IGFsbEZhY2V0cywgYWxsRm9sbG93cywgRmFjZXQsIEZvbGxvdyB9IGZyb20gXCIuL2FwaVwiXG5leHBvcnQge1xuICBkYXRlRnJvbU51bGxhYmxlRGF0ZU9ySXNvU3RyaW5nLFxuICBkYXRlRnJvbVllYXJNb250aERheVRpbWV6b25lU3RyaW5nLFxuICBkaXNwbGF5RGF0ZUZyb21Mb2NhbElzb1N0cmluZyxcbiAgZXhpc3RpbmdEYXRlVG9Kc29uLFxuICBmb3JtYXRSZWxhdGl2ZUZyZW5jaFRpbWUsXG4gIGZyZW5jaERhdGVGb3JtYXQsXG4gIGZyZW5jaERhdGVTYW1lWWVhclNob3J0Rm9ybWF0LFxuICBmcmVuY2hEYXRlV2l0aG91dERheU9mV2Vla0Zyb21EYXRlT3JTdHJpbmcsXG4gIGZyZW5jaFRpbWVGb3JtYXQsXG4gIGZyZW5jaFRpbWVGcm9tRGF0ZU9yU3RyaW5nLFxuICBsb2NhbElzbzg2MDFTdHJpbmdGcm9tRGF0ZSxcbiAgcGF0Y2hlZERhdGVUb0pzb24sXG59IGZyb20gXCIuL2RhdGVzXCJcbmV4cG9ydCB0eXBlIHsgU3RhdHVzIH0gZnJvbSBcIi4vZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuZXhwb3J0IHtcbiAgY29tbWlzc2lvbkZvbmRVaWRGcm9tRG9zc2llcixcbiAgc3RhdGVGcm9tQWN0ZVBhdGgsXG4gIHN0YXRlRnJvbUFjdGVzLFxuICBzdGF0ZUZyb21Eb3NzaWVyLFxuICBzdGF0dXNGcm9tQ29kaWVyTGliZWxsZSxcbiAgU3RhdHVzT25seSxcbiAgd2Fsa0FjdGVzLFxuICB3YWxrRG9jdW1lbnRBbmREaXZpc2lvbnMsXG59IGZyb20gXCIuL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmV4cG9ydCB0eXBlIHsgT3V0cHV0RGF0YSB9IGZyb20gXCIuL2luc2VydGVyc1wiXG5leHBvcnQge1xuICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzLFxuICBpbnNlcnRBbWVuZGVtZW50UmVmZXJlbmNlcyxcbiAgaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzLFxuICBpbnNlcnREb3NzaWVyUmVmZXJlbmNlcyxcbiAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyxcbiAgaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMsXG4gIGluc2VydFNjcnV0aW5SZWZlcmVuY2VzLFxufSBmcm9tIFwiLi9pbnNlcnRlcnNcIlxuZXhwb3J0IHsgc2hvcnROYW1lRnJvbU9yZ2FuZSB9IGZyb20gXCIuL29yZ2FuZXNcIlxuZXhwb3J0IHsgQ29kZUFjdGUgfSBmcm9tIFwiLi9zaGFyZWRfdHlwZXMvY29kZXNfYWN0ZXNcIlxuZXhwb3J0IHsgY2FwaXRhbGl6ZUZpcnN0TGV0dGVyLCB1bmNhcGl0YWxpemVGaXJzdExldHRlciB9IGZyb20gXCIuL3N0cmluZ3NcIlxuZXhwb3J0IHR5cGUge1xuICBBY3RldXIsXG4gIEV0YXRDaXZpbCxcbiAgTWFuZGF0LFxuICBPcmdhbmUsXG4gIFBob3RvLFxufSBmcm9tIFwiLi90eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuZXhwb3J0IHtcbiAgQ29kZVR5cGVPcmdhbmUsXG4gIFR5cGVNYW5kYXQsXG4gIFR5cGVPcmdhbmUsXG59IGZyb20gXCIuL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5leHBvcnQgdHlwZSB7IFJldW5pb24gfSBmcm9tIFwiLi90eXBlcy9hZ2VuZGFzXCJcbmV4cG9ydCB7IEV0YXRDeWNsZURlVmllLCBUeXBlUmV1bmlvbiB9IGZyb20gXCIuL3R5cGVzL2FnZW5kYXNcIlxuZXhwb3J0IHR5cGUge1xuICBBbWVuZGVtZW50LFxuICBFdGF0QW1lbmRlbWVudCxcbiAgU2lnbmF0YWlyZXMsXG59IGZyb20gXCIuL3R5cGVzL2FtZW5kZW1lbnRzXCJcbmV4cG9ydCB7XG4gIEF2YW50QUFwcmVzLFxuICBDb252ZXJ0IGFzIEFtZW5kZW1lbnRzQ29udmVydCxcbiAgRXRhdEFtZW5kZW1lbnRMaWJlbGxlLFxuICBTb3J0QW1lbmRlbWVudCxcbn0gZnJvbSBcIi4vdHlwZXMvYW1lbmRlbWVudHNcIlxuZXhwb3J0IHR5cGUge1xuICBBY3RlTGVnaXNsYXRpZixcbiAgRGl2aXNpb24sXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgSW5mb0pvLFxufSBmcm9tIFwiLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5leHBvcnQgeyBUeXBlQWN0ZUxlZ2lzbGF0aWYsIFR5cGVEb2N1bWVudCB9IGZyb20gXCIuL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmV4cG9ydCB7IExlZ2lzbGF0dXJlIH0gZnJvbSBcIi4vdHlwZXMvbGVnaXNsYXR1cmVzXCJcbmV4cG9ydCB0eXBlIHsgU2NydXRpbiB9IGZyb20gXCIuL3R5cGVzL3NjcnV0aW5zXCJcbmV4cG9ydCB7XG4gIERvY3VtZW50VXJsRm9ybWF0LFxuICBpdGVyRG9jdW1lbnRPckRpdmlzaW9uVXJscyxcbiAgdXJsRnJvbURvY3VtZW50LFxuICB1cmxGcm9tU2NydXRpbixcbn0gZnJvbSBcIi4vdXJsc1wiXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQSxTQU9TQSxTQUFTLEVBQUVDLFVBQVUsRUFBRUMsS0FBSyxFQUFFQyxNQUFNO0FBQUEsU0FFM0NDLCtCQUErQixFQUMvQkMsa0NBQWtDLEVBQ2xDQyw2QkFBNkIsRUFDN0JDLGtCQUFrQixFQUNsQkMsd0JBQXdCLEVBQ3hCQyxnQkFBZ0IsRUFDaEJDLDZCQUE2QixFQUM3QkMsMENBQTBDLEVBQzFDQyxnQkFBZ0IsRUFDaEJDLDBCQUEwQixFQUMxQkMsMEJBQTBCLEVBQzFCQyxpQkFBaUI7QUFBQSxTQUlqQkMsNEJBQTRCLEVBQzVCQyxpQkFBaUIsRUFDakJDLGNBQWMsRUFDZEMsZ0JBQWdCLEVBQ2hCQyx1QkFBdUIsRUFDdkJDLFVBQVUsRUFDVkMsU0FBUyxFQUNUQyx3QkFBd0I7QUFBQSxTQUl4QkMsc0JBQXNCLEVBQ3RCQywwQkFBMEIsRUFDMUJDLHdCQUF3QixFQUN4QkMsdUJBQXVCLEVBQ3ZCQyxzQkFBc0IsRUFDdEJDLHVCQUF1QixFQUN2QkMsdUJBQXVCO0FBQUEsU0FFaEJDLG1CQUFtQjtBQUFBLFNBQ25CQyxRQUFRO0FBQUEsU0FDUkMscUJBQXFCLEVBQUVDLHVCQUF1QjtBQUFBLFNBU3JEQyxjQUFjLEVBQ2RDLFVBQVUsRUFDVkMsVUFBVTtBQUFBLFNBR0hDLGNBQWMsRUFBRUMsV0FBVztBQUFBLFNBT2xDQyxXQUFXLEVBQ1hDLE9BQU8sSUFBSUMsa0JBQWtCLEVBQzdCQyxxQkFBcUIsRUFDckJDLGNBQWM7QUFBQSxTQVNQQyxrQkFBa0IsRUFBRUMsWUFBWTtBQUFBLFNBQ2hDQyxXQUFXO0FBQUEsU0FHbEJDLGlCQUFpQixFQUNqQkMsMEJBQTBCLEVBQzFCQyxlQUFlLEVBQ2ZDLGNBQWMifQ==
package/lib/inserters.js CHANGED
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
 
3
3
  require("core-js/modules/es.array.slice.js");
4
+ require("core-js/modules/es.date.to-string.js");
4
5
  require("core-js/modules/es.object.to-string.js");
6
+ require("core-js/modules/es.regexp.to-string.js");
5
7
  require("core-js/modules/es.function.name.js");
6
8
  require("core-js/modules/es.array.from.js");
7
9
  require("core-js/modules/es.string.iterator.js");
@@ -511,4 +513,4 @@ function insertScrutinReferences(scrutin, _data, visitedUids) {
511
513
 
512
514
  return scrutin;
513
515
  }
514
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMiLCJhY3RlIiwiZGF0YSIsInZpc2l0ZWRVaWRzIiwiaGFzIiwidWlkIiwiYWRkIiwiZG9jdW1lbnRCeVVpZCIsInVuZGVmaW5lZCIsImRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlUmVmIiwiZG9jdW1lbnQiLCJkZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZSIsImluc2VydERvY3VtZW50UmVmZXJlbmNlcyIsIm9yZ2FuZUJ5VWlkIiwib3JnYW5lUmVmIiwib3JnYW5lIiwiaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyIsInByb3ZlbmFuY2VSZWYiLCJwcm92ZW5hbmNlIiwiYWN0ZXVyQnlVaWQiLCJyYXBwb3J0ZXVycyIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJyYXBwb3J0ZXVyIiwidmFsdWUiLCJhY3RldXIiLCJhY3RldXJSZWYiLCJpbnNlcnRBY3RldXJSZWZlcmVuY2VzIiwiZXJyIiwiZSIsImYiLCJyZXVuaW9uQnlVaWQiLCJyZXVuaW9uUmVmIiwicmV1bmlvbiIsImluc2VydFJldW5pb25SZWZlcmVuY2VzIiwib2RqUmVmIiwib2RqIiwicG9pbnRzT2RqIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsInBvaW50T2RqIiwidGV4dGVBZG9wdGVSZWYiLCJ0ZXh0ZUFkb3B0ZSIsInRleHRlQXNzb2NpZVJlZiIsInRleHRlQXNzb2NpZSIsInRleHRlc0Fzc29jaWVzIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsInNjcnV0aW5CeVVpZCIsInZvdGVSZWZzIiwic2NydXRpbnMiLCJfaXRlcmF0b3I0IiwiX3N0ZXA0Iiwidm90ZVJlZiIsInNjcnV0aW4iLCJwdXNoIiwiaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMiLCJ2b3RlcyIsIl9pdGVyYXRvcjUiLCJhY3Rlc0xlZ2lzbGF0aWZzIiwiX3N0ZXA1IiwiY2hpbGRBY3RlIiwiX2l0ZXJhdG9yNiIsIm1hbmRhdHMiLCJfc3RlcDYiLCJtYW5kYXQiLCJvcmdhbmVzIiwiX2l0ZXJhdG9yNyIsIm9yZ2FuZXNSZWZzIiwiX3N0ZXA3IiwiaW5zZXJ0QW1lbmRlbWVudFJlZmVyZW5jZXMiLCJhbWVuZGVtZW50Iiwic2lnbmF0YWlyZXMiLCJhdXRldXIiLCJhdXRldXJSYXBwb3J0ZXVyT3JnYW5lUmVmIiwiYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSIsImdvdXZlcm5lbWVudFJlZiIsImdvdXZlcm5lbWVudCIsImdyb3VwZVBvbGl0aXF1ZVJlZiIsImdyb3VwZVBvbGl0aXF1ZSIsImNvc2lnbmF0YWlyZXNSZWZzIiwiY29zaWduYXRhaXJlcyIsIl9pdGVyYXRvcjgiLCJfc3RlcDgiLCJjb3NpZ25hdGFpcmVSZWYiLCJjb3NpZ25hdGFpcmUiLCJpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMiLCJkaXZpc2lvbiIsIl9pdGVyYXRvcjkiLCJhdXRldXJzIiwiX3N0ZXA5IiwiYWN0ZXVyU3VtbWFyeSIsImRvc3NpZXJCeVVpZCIsImRvc3NpZXIiLCJkb3NzaWVyUmVmIiwiaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMiLCJfaXRlcmF0b3IxMCIsImRpdmlzaW9ucyIsIl9zdGVwMTAiLCJjaGlsZERpdmlzaW9uIiwiX2l0ZXJhdG9yMTEiLCJfc3RlcDExIiwiX2l0ZXJhdG9yMTIiLCJfc3RlcDEyIiwiX2Rvc3NpZXIkYWN0ZXNMZWdpc2xhIiwiX2l0ZXJhdG9yMTMiLCJfc3RlcDEzIiwiaW5pdGlhdGV1ciIsIl9pdGVyYXRvcjE0IiwiYWN0ZXVycyIsIl9zdGVwMTQiLCJtYW5kYXRSZWYiLCJfaXRlcmF0b3IxNSIsIl9zdGVwMTUiLCJvcmdhbmVQYXJlbnRSZWYiLCJvcmdhbmVQYXJlbnQiLCJkZW1hbmRldXJzIiwiX2l0ZXJhdG9yMTYiLCJfc3RlcDE2Iiwib3JnYW5lU3VtbWFyeSIsIm9yZ2FuZVJldW5pUmVmIiwib3JnYW5lUmV1bmkiLCJwYXJ0aWNpcGFudHMiLCJfaXRlcmF0b3IxNyIsInBhcnRpY2lwYW50c0ludGVybmVzIiwiX3N0ZXAxNyIsInBhcnRpY2lwYW50SW50ZXJuZSIsIl9kYXRhIl0sInNvdXJjZXMiOlsiLi4vc3JjL2luc2VydGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RldXIsIE9yZ2FuZSB9IGZyb20gXCIuL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBSZXVuaW9uIH0gZnJvbSBcIi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50IH0gZnJvbSBcIi4vdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHtcbiAgQWN0ZUxlZ2lzbGF0aWYsXG4gIERpdmlzaW9uLFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IFNjcnV0aW4gfSBmcm9tIFwiLi90eXBlcy9zY3J1dGluc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0RGF0YSB7XG4gIHJlYWRvbmx5IGFjdGV1ckJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfVxuICByZWFkb25seSBhbWVuZGVtZW50QnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfVxuICByZWFkb25seSBkb2N1bWVudEJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9XG4gIHJlYWRvbmx5IGRvc3NpZXJCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfVxuICByZWFkb25seSBvcmdhbmVCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH1cbiAgcmVhZG9ubHkgcmV1bmlvbkJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBSZXVuaW9uIH1cbiAgcmVhZG9ubHkgc2NydXRpbkJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH1cbn1cblxuZnVuY3Rpb24gaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKFxuICBhY3RlOiBBY3RlTGVnaXNsYXRpZixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKGFjdGUudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChhY3RlLnVpZClcblxuICAgIGlmIChcbiAgICAgIGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhY3RlLmRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGRvY3VtZW50ID0gZGF0YS5kb2N1bWVudEJ5VWlkW2FjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmVSZWZdXG4gICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLmRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlID0gZG9jdW1lbnRcbiAgICAgICAgaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKGRvY3VtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLm9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2FjdGUub3JnYW5lUmVmXVxuICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUub3JnYW5lID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnByb3ZlbmFuY2VSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthY3RlLnByb3ZlbmFuY2VSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS5wcm92ZW5hbmNlID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnJhcHBvcnRldXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgcmFwcG9ydGV1ciBvZiBhY3RlLnJhcHBvcnRldXJzKSB7XG4gICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbcmFwcG9ydGV1ci5hY3RldXJSZWZdXG4gICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJhcHBvcnRldXIuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLnJldW5pb25CeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucmV1bmlvblJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCByZXVuaW9uID0gZGF0YS5yZXVuaW9uQnlVaWRbYWN0ZS5yZXVuaW9uUmVmXVxuICAgICAgaWYgKHJldW5pb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnJldW5pb24gPSByZXVuaW9uXG4gICAgICAgIGluc2VydFJldW5pb25SZWZlcmVuY2VzKHJldW5pb24sIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICBpZiAoYWN0ZS5vZGpSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IG9kaiA9IHJldW5pb24ub2RqXG4gICAgICAgICAgaWYgKG9kaiAhPT0gdW5kZWZpbmVkICYmIG9kai5wb2ludHNPZGogIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBwb2ludE9kaiBvZiBvZGoucG9pbnRzT2RqKSB7XG4gICAgICAgICAgICAgIGlmIChwb2ludE9kai51aWQgPT09IGFjdGUub2RqUmVmKSB7XG4gICAgICAgICAgICAgICAgYWN0ZS5vZGogPSBwb2ludE9kalxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudGV4dGVBZG9wdGVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS50ZXh0ZUFkb3B0ZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUudGV4dGVBZG9wdGUgPSBkb2N1bWVudFxuICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLmRvY3VtZW50QnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYWN0ZS50ZXh0ZUFzc29jaWVSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS50ZXh0ZUFzc29jaWVSZWZdXG4gICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnRleHRlQXNzb2NpZSA9IGRvY3VtZW50XG4gICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmRvY3VtZW50QnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnRleHRlc0Fzc29jaWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgdGV4dGVBc3NvY2llIG9mIGFjdGUudGV4dGVzQXNzb2NpZXMpIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbdGV4dGVBc3NvY2llLnRleHRlQXNzb2NpZVJlZl1cbiAgICAgICAgaWYgKGRvY3VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0ZXh0ZUFzc29jaWUudGV4dGVBc3NvY2llID0gZG9jdW1lbnRcbiAgICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLnNjcnV0aW5CeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudm90ZVJlZnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgc2NydXRpbnMgPSBbXVxuICAgICAgZm9yIChjb25zdCB2b3RlUmVmIG9mIGFjdGUudm90ZVJlZnMpIHtcbiAgICAgICAgY29uc3Qgc2NydXRpbiA9IGRhdGEuc2NydXRpbkJ5VWlkW3ZvdGVSZWZdXG4gICAgICAgIGlmIChzY3J1dGluICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzY3J1dGlucy5wdXNoKHNjcnV0aW4pXG4gICAgICAgICAgaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMoc2NydXRpbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGFjdGUudm90ZXMgPSBzY3J1dGluc1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGRBY3RlIG9mIGFjdGUuYWN0ZXNMZWdpc2xhdGlmcyB8fCBbXSkge1xuICAgICAgaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKGNoaWxkQWN0ZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFjdGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEFjdGV1clJlZmVyZW5jZXMoXG4gIGFjdGV1cjogQWN0ZXVyLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYWN0ZXVyLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoYWN0ZXVyLnVpZClcblxuICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgbWFuZGF0IG9mIGFjdGV1ci5tYW5kYXRzIHx8IFtdKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZXMgPSBbXVxuICAgICAgICBmb3IgKGNvbnN0IG9yZ2FuZVJlZiBvZiBtYW5kYXQub3JnYW5lc1JlZnMpIHtcbiAgICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW29yZ2FuZVJlZl1cbiAgICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9yZ2FuZXMucHVzaChvcmdhbmUpXG4gICAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG1hbmRhdC5vcmdhbmVzID0gb3JnYW5lc1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhY3RldXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEFtZW5kZW1lbnRSZWZlcmVuY2VzKFxuICBhbWVuZGVtZW50OiBBbWVuZGVtZW50LFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYW1lbmRlbWVudC51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGFtZW5kZW1lbnQudWlkKVxuXG4gICAgY29uc3Qgc2lnbmF0YWlyZXMgPSBhbWVuZGVtZW50LnNpZ25hdGFpcmVzXG4gICAgY29uc3QgYXV0ZXVyID0gc2lnbmF0YWlyZXMuYXV0ZXVyXG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhdXRldXIuYWN0ZXVyUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYXV0ZXVyLmFjdGV1clJlZl1cbiAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBhdXRldXJSYXBwb3J0ZXVyT3JnYW5lID1cbiAgICAgICAgZGF0YS5vcmdhbmVCeVVpZFthdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZl1cbiAgICAgIGlmIChhdXRldXJSYXBwb3J0ZXVyT3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmF1dGV1clJhcHBvcnRldXJPcmdhbmUgPSBhdXRldXJSYXBwb3J0ZXVyT3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYXV0ZXVyLmdvdXZlcm5lbWVudFJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBnb3V2ZXJuZW1lbnQgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5nb3V2ZXJuZW1lbnRSZWZdXG4gICAgICBpZiAoZ291dmVybmVtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmdvdXZlcm5lbWVudCA9IGdvdXZlcm5lbWVudFxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKGdvdXZlcm5lbWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5ncm91cGVQb2xpdGlxdWVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZSA9IG9yZ2FuZVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZXNSZWZzID0gc2lnbmF0YWlyZXMuY29zaWduYXRhaXJlc1JlZnNcbiAgICAgIGlmIChjb3NpZ25hdGFpcmVzUmVmcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZXMgPSBbXVxuICAgICAgICBmb3IgKGNvbnN0IGNvc2lnbmF0YWlyZVJlZiBvZiBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzUmVmcyB8fCBbXSkge1xuICAgICAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZSA9IGRhdGEuYWN0ZXVyQnlVaWRbY29zaWduYXRhaXJlUmVmXVxuICAgICAgICAgIGlmIChjb3NpZ25hdGFpcmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29zaWduYXRhaXJlcy5wdXNoKGNvc2lnbmF0YWlyZSlcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoY29zaWduYXRhaXJlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2lnbmF0YWlyZXMuY29zaWduYXRhaXJlcyA9IGNvc2lnbmF0YWlyZXNcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYW1lbmRlbWVudFxufVxuXG5mdW5jdGlvbiBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoXG4gIGRpdmlzaW9uOiBEaXZpc2lvbixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGZvciAoY29uc3QgYXV0ZXVyIG9mIGRpdmlzaW9uLmF1dGV1cnMpIHtcbiAgICBjb25zdCBhY3RldXJTdW1tYXJ5ID0gYXV0ZXVyLmFjdGV1clxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZXVyU3VtbWFyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthdXRldXIub3JnYW5lUmVmXVxuICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1dGV1ci5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChkYXRhLmRvc3NpZXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZG9zc2llciA9IGRhdGEuZG9zc2llckJ5VWlkW2RpdmlzaW9uLmRvc3NpZXJSZWZdXG4gICAgaWYgKGRvc3NpZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZGl2aXNpb24uZG9zc2llciA9IGRvc3NpZXJcbiAgICAgIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKGRvc3NpZXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgY2hpbGREaXZpc2lvbiBvZiBkaXZpc2lvbi5kaXZpc2lvbnMgfHwgW10pIHtcbiAgICBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoY2hpbGREaXZpc2lvbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gIH1cblxuICByZXR1cm4gZGl2aXNpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhcbiAgZG9jdW1lbnQ6IERvY3VtZW50LFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoZG9jdW1lbnQudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChkb2N1bWVudC51aWQpXG5cbiAgICBmb3IgKGNvbnN0IGF1dGV1ciBvZiBkb2N1bWVudC5hdXRldXJzKSB7XG4gICAgICBjb25zdCBhY3RldXJTdW1tYXJ5ID0gYXV0ZXVyLmFjdGV1clxuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhdXRldXIub3JnYW5lUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthdXRldXIub3JnYW5lUmVmXVxuICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhdXRldXIub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuZG9zc2llckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGRvc3NpZXIgPSBkYXRhLmRvc3NpZXJCeVVpZFtkb2N1bWVudC5kb3NzaWVyUmVmXVxuICAgICAgaWYgKGRvc3NpZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkb2N1bWVudC5kb3NzaWVyID0gZG9zc2llclxuICAgICAgICBpbnNlcnREb3NzaWVyUmVmZXJlbmNlcyhkb3NzaWVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGRpdmlzaW9uIG9mIGRvY3VtZW50LmRpdmlzaW9ucyB8fCBbXSkge1xuICAgICAgaW5zZXJ0RGl2aXNpb25SZWZlcmVuY2VzKGRpdmlzaW9uLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZG9jdW1lbnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKFxuICBkb3NzaWVyOiBEb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKGRvc3NpZXIudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChkb3NzaWVyLnVpZClcblxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBkb3NzaWVyLmFjdGVzTGVnaXNsYXRpZnMgPz8gW10pIHtcbiAgICAgIGluc2VydEFjdGVMZWdpc2xhdGlmUmVmZXJlbmNlcyhhY3RlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG5cbiAgICBjb25zdCBpbml0aWF0ZXVyID0gZG9zc2llci5pbml0aWF0ZXVyXG4gICAgaWYgKGluaXRpYXRldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGV1clN1bW1hcnkgb2YgaW5pdGlhdGV1ci5hY3RldXJzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5Lm1hbmRhdFJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1hbmRhdCBvZiBhY3RldXIubWFuZGF0cyB8fCBbXSkge1xuICAgICAgICAgICAgICBpZiAobWFuZGF0LnVpZCA9PT0gYWN0ZXVyU3VtbWFyeS5tYW5kYXRSZWYpIHtcbiAgICAgICAgICAgICAgICBhY3RldXJTdW1tYXJ5Lm1hbmRhdCA9IG1hbmRhdFxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGluaXRpYXRldXIub3JnYW5lUmVmICE9PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2luaXRpYXRldXIub3JnYW5lUmVmXVxuICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpbml0aWF0ZXVyLm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkb3NzaWVyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKFxuICBvcmdhbmU6IE9yZ2FuZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKG9yZ2FuZS51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKG9yZ2FuZS51aWQpXG5cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIG9yZ2FuZS5vcmdhbmVQYXJlbnRSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3Qgb3JnYW5lUGFyZW50ID0gZGF0YS5vcmdhbmVCeVVpZFtvcmdhbmUub3JnYW5lUGFyZW50UmVmXVxuICAgICAgaWYgKG9yZ2FuZVBhcmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9yZ2FuZS5vcmdhbmVQYXJlbnQgPSBvcmdhbmVQYXJlbnRcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmVQYXJlbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE9cbiAgfVxuXG4gIHJldHVybiBvcmdhbmVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydFJldW5pb25SZWZlcmVuY2VzKFxuICByZXVuaW9uOiBSZXVuaW9uLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMocmV1bmlvbi51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKHJldW5pb24udWlkKVxuXG4gICAgY29uc3QgZGVtYW5kZXVycyA9IHJldW5pb24uZGVtYW5kZXVyc1xuICAgIGlmIChkZW1hbmRldXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBhY3RldXJTdW1tYXJ5IG9mIGRlbWFuZGV1cnMuYWN0ZXVycyB8fCBbXSkge1xuICAgICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYWN0ZXVyU3VtbWFyeS5hY3RldXJSZWZdXG4gICAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhY3RldXJTdW1tYXJ5LmFjdGV1ciA9IGFjdGV1clxuICAgICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBvcmdhbmVTdW1tYXJ5ID0gZGVtYW5kZXVycy5vcmdhbmVcbiAgICAgICAgaWYgKG9yZ2FuZVN1bW1hcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbb3JnYW5lU3VtbWFyeS5vcmdhbmVSZWZdXG4gICAgICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBvcmdhbmVTdW1tYXJ5Lm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHJldW5pb24ub3JnYW5lUmV1bmlSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3Qgb3JnYW5lUmV1bmkgPSBkYXRhLm9yZ2FuZUJ5VWlkW3JldW5pb24ub3JnYW5lUmV1bmlSZWZdXG4gICAgICBpZiAob3JnYW5lUmV1bmkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXVuaW9uLm9yZ2FuZVJldW5pID0gb3JnYW5lUmV1bmlcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmVSZXVuaSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHBhcnRpY2lwYW50cyA9IHJldW5pb24ucGFydGljaXBhbnRzXG4gICAgICBpZiAocGFydGljaXBhbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBwYXJ0aWNpcGFudEludGVybmUgb2YgcGFydGljaXBhbnRzLnBhcnRpY2lwYW50c0ludGVybmVzIHx8XG4gICAgICAgICAgW10pIHtcbiAgICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW3BhcnRpY2lwYW50SW50ZXJuZS5hY3RldXJSZWZdXG4gICAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBwYXJ0aWNpcGFudEludGVybmUuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldW5pb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydFNjcnV0aW5SZWZlcmVuY2VzKFxuICBzY3J1dGluOiBTY3J1dGluLFxuICBfZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKHNjcnV0aW4udWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChzY3J1dGluLnVpZClcblxuICAgIC8vIFRPRE9cbiAgfVxuXG4gIHJldHVybiBzY3J1dGluXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQkEsU0FBU0EsOEJBQThCQSxDQUNyQ0MsSUFBb0IsRUFDcEJDLElBQWdCLEVBQ2hCQyxXQUF3QixFQUN4QjtFQUNBLElBQUksQ0FBQ0EsV0FBVyxDQUFDQyxHQUFHLENBQUNILElBQUksQ0FBQ0ksR0FBRyxDQUFDLEVBQUU7SUFDOUJGLFdBQVcsQ0FBQ0csR0FBRyxDQUFDTCxJQUFJLENBQUNJLEdBQUcsQ0FBQztJQUV6QixJQUNFSCxJQUFJLENBQUNLLGFBQWEsS0FBS0MsU0FBUyxJQUNoQ1AsSUFBSSxDQUFDUSxnQ0FBZ0MsS0FBS0QsU0FBUyxFQUNuRDtNQUNBLElB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
516
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMiLCJhY3RlIiwiZGF0YSIsInZpc2l0ZWRVaWRzIiwiaGFzIiwidWlkIiwiYWRkIiwiZG9jdW1lbnRCeVVpZCIsInVuZGVmaW5lZCIsImRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlUmVmIiwiZG9jdW1lbnQiLCJkZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZSIsImluc2VydERvY3VtZW50UmVmZXJlbmNlcyIsIm9yZ2FuZUJ5VWlkIiwib3JnYW5lUmVmIiwib3JnYW5lIiwiaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyIsInByb3ZlbmFuY2VSZWYiLCJwcm92ZW5hbmNlIiwiYWN0ZXVyQnlVaWQiLCJyYXBwb3J0ZXVycyIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJyYXBwb3J0ZXVyIiwidmFsdWUiLCJhY3RldXIiLCJhY3RldXJSZWYiLCJpbnNlcnRBY3RldXJSZWZlcmVuY2VzIiwiZXJyIiwiZSIsImYiLCJyZXVuaW9uQnlVaWQiLCJyZXVuaW9uUmVmIiwicmV1bmlvbiIsImluc2VydFJldW5pb25SZWZlcmVuY2VzIiwib2RqUmVmIiwib2RqIiwicG9pbnRzT2RqIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsInBvaW50T2RqIiwidGV4dGVBZG9wdGVSZWYiLCJ0ZXh0ZUFkb3B0ZSIsInRleHRlQXNzb2NpZVJlZiIsInRleHRlQXNzb2NpZSIsInRleHRlc0Fzc29jaWVzIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsInNjcnV0aW5CeVVpZCIsInZvdGVSZWZzIiwic2NydXRpbnMiLCJfaXRlcmF0b3I0IiwiX3N0ZXA0Iiwidm90ZVJlZiIsInNjcnV0aW4iLCJwdXNoIiwiaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMiLCJ2b3RlcyIsIl9pdGVyYXRvcjUiLCJhY3Rlc0xlZ2lzbGF0aWZzIiwiX3N0ZXA1IiwiY2hpbGRBY3RlIiwiX2l0ZXJhdG9yNiIsIm1hbmRhdHMiLCJfc3RlcDYiLCJtYW5kYXQiLCJvcmdhbmVzIiwiX2l0ZXJhdG9yNyIsIm9yZ2FuZXNSZWZzIiwiX3N0ZXA3IiwiaW5zZXJ0QW1lbmRlbWVudFJlZmVyZW5jZXMiLCJhbWVuZGVtZW50Iiwic2lnbmF0YWlyZXMiLCJhdXRldXIiLCJhdXRldXJSYXBwb3J0ZXVyT3JnYW5lUmVmIiwiYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSIsImdvdXZlcm5lbWVudFJlZiIsImdvdXZlcm5lbWVudCIsImdyb3VwZVBvbGl0aXF1ZVJlZiIsImdyb3VwZVBvbGl0aXF1ZSIsImNvc2lnbmF0YWlyZXNSZWZzIiwiY29zaWduYXRhaXJlcyIsIl9pdGVyYXRvcjgiLCJfc3RlcDgiLCJjb3NpZ25hdGFpcmVSZWYiLCJjb3NpZ25hdGFpcmUiLCJpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMiLCJkaXZpc2lvbiIsIl9pdGVyYXRvcjkiLCJhdXRldXJzIiwiX3N0ZXA5IiwiYWN0ZXVyU3VtbWFyeSIsImRvc3NpZXJCeVVpZCIsImRvc3NpZXIiLCJkb3NzaWVyUmVmIiwiaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMiLCJfaXRlcmF0b3IxMCIsImRpdmlzaW9ucyIsIl9zdGVwMTAiLCJjaGlsZERpdmlzaW9uIiwiX2l0ZXJhdG9yMTEiLCJfc3RlcDExIiwiX2l0ZXJhdG9yMTIiLCJfc3RlcDEyIiwiX2Rvc3NpZXIkYWN0ZXNMZWdpc2xhIiwiX2l0ZXJhdG9yMTMiLCJfc3RlcDEzIiwiaW5pdGlhdGV1ciIsIl9pdGVyYXRvcjE0IiwiYWN0ZXVycyIsIl9zdGVwMTQiLCJtYW5kYXRSZWYiLCJfaXRlcmF0b3IxNSIsIl9zdGVwMTUiLCJvcmdhbmVQYXJlbnRSZWYiLCJvcmdhbmVQYXJlbnQiLCJkZW1hbmRldXJzIiwiX2l0ZXJhdG9yMTYiLCJfc3RlcDE2Iiwib3JnYW5lU3VtbWFyeSIsIm9yZ2FuZVJldW5pUmVmIiwib3JnYW5lUmV1bmkiLCJwYXJ0aWNpcGFudHMiLCJfaXRlcmF0b3IxNyIsInBhcnRpY2lwYW50c0ludGVybmVzIiwiX3N0ZXAxNyIsInBhcnRpY2lwYW50SW50ZXJuZSIsIl9kYXRhIl0sInNvdXJjZXMiOlsiLi4vc3JjL2luc2VydGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RldXIsIE9yZ2FuZSB9IGZyb20gXCIuL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBSZXVuaW9uIH0gZnJvbSBcIi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50IH0gZnJvbSBcIi4vdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHtcbiAgQWN0ZUxlZ2lzbGF0aWYsXG4gIERpdmlzaW9uLFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IFNjcnV0aW4gfSBmcm9tIFwiLi90eXBlcy9zY3J1dGluc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0RGF0YSB7XG4gIHJlYWRvbmx5IGFjdGV1ckJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfVxuICByZWFkb25seSBhbWVuZGVtZW50QnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfVxuICByZWFkb25seSBkb2N1bWVudEJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9XG4gIHJlYWRvbmx5IGRvc3NpZXJCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfVxuICByZWFkb25seSBvcmdhbmVCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH1cbiAgcmVhZG9ubHkgcmV1bmlvbkJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBSZXVuaW9uIH1cbiAgcmVhZG9ubHkgc2NydXRpbkJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH1cbn1cblxuZnVuY3Rpb24gaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKFxuICBhY3RlOiBBY3RlTGVnaXNsYXRpZixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKGFjdGUudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChhY3RlLnVpZClcblxuICAgIGlmIChcbiAgICAgIGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhY3RlLmRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGRvY3VtZW50ID0gZGF0YS5kb2N1bWVudEJ5VWlkW2FjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmVSZWZdXG4gICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLmRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlID0gZG9jdW1lbnRcbiAgICAgICAgaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKGRvY3VtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLm9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2FjdGUub3JnYW5lUmVmXVxuICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUub3JnYW5lID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnByb3ZlbmFuY2VSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthY3RlLnByb3ZlbmFuY2VSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS5wcm92ZW5hbmNlID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnJhcHBvcnRldXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgcmFwcG9ydGV1ciBvZiBhY3RlLnJhcHBvcnRldXJzKSB7XG4gICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbcmFwcG9ydGV1ci5hY3RldXJSZWZdXG4gICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJhcHBvcnRldXIuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLnJldW5pb25CeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucmV1bmlvblJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCByZXVuaW9uID0gZGF0YS5yZXVuaW9uQnlVaWRbYWN0ZS5yZXVuaW9uUmVmXVxuICAgICAgaWYgKHJldW5pb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnJldW5pb24gPSByZXVuaW9uXG4gICAgICAgIGluc2VydFJldW5pb25SZWZlcmVuY2VzKHJldW5pb24sIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICBpZiAoYWN0ZS5vZGpSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IG9kaiA9IHJldW5pb24ub2RqXG4gICAgICAgICAgaWYgKG9kaiAhPT0gdW5kZWZpbmVkICYmIG9kai5wb2ludHNPZGogIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBwb2ludE9kaiBvZiBvZGoucG9pbnRzT2RqKSB7XG4gICAgICAgICAgICAgIGlmIChwb2ludE9kai51aWQgPT09IGFjdGUub2RqUmVmKSB7XG4gICAgICAgICAgICAgICAgYWN0ZS5vZGogPSBwb2ludE9kalxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudGV4dGVBZG9wdGVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS50ZXh0ZUFkb3B0ZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUudGV4dGVBZG9wdGUgPSBkb2N1bWVudFxuICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLmRvY3VtZW50QnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYWN0ZS50ZXh0ZUFzc29jaWVSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS50ZXh0ZUFzc29jaWVSZWZdXG4gICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnRleHRlQXNzb2NpZSA9IGRvY3VtZW50XG4gICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmRvY3VtZW50QnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnRleHRlc0Fzc29jaWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgdGV4dGVBc3NvY2llIG9mIGFjdGUudGV4dGVzQXNzb2NpZXMpIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbdGV4dGVBc3NvY2llLnRleHRlQXNzb2NpZVJlZl1cbiAgICAgICAgaWYgKGRvY3VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0ZXh0ZUFzc29jaWUudGV4dGVBc3NvY2llID0gZG9jdW1lbnRcbiAgICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLnNjcnV0aW5CeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudm90ZVJlZnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgc2NydXRpbnMgPSBbXVxuICAgICAgZm9yIChjb25zdCB2b3RlUmVmIG9mIGFjdGUudm90ZVJlZnMpIHtcbiAgICAgICAgY29uc3Qgc2NydXRpbiA9IGRhdGEuc2NydXRpbkJ5VWlkW3ZvdGVSZWZdXG4gICAgICAgIGlmIChzY3J1dGluICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzY3J1dGlucy5wdXNoKHNjcnV0aW4pXG4gICAgICAgICAgaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMoc2NydXRpbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGFjdGUudm90ZXMgPSBzY3J1dGluc1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGRBY3RlIG9mIGFjdGUuYWN0ZXNMZWdpc2xhdGlmcyB8fCBbXSkge1xuICAgICAgaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKGNoaWxkQWN0ZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFjdGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEFjdGV1clJlZmVyZW5jZXMoXG4gIGFjdGV1cjogQWN0ZXVyLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYWN0ZXVyLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoYWN0ZXVyLnVpZClcblxuICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgbWFuZGF0IG9mIGFjdGV1ci5tYW5kYXRzIHx8IFtdKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZXMgPSBbXVxuICAgICAgICBmb3IgKGNvbnN0IG9yZ2FuZVJlZiBvZiBtYW5kYXQub3JnYW5lc1JlZnMpIHtcbiAgICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW29yZ2FuZVJlZl1cbiAgICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9yZ2FuZXMucHVzaChvcmdhbmUpXG4gICAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG1hbmRhdC5vcmdhbmVzID0gb3JnYW5lc1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhY3RldXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEFtZW5kZW1lbnRSZWZlcmVuY2VzKFxuICBhbWVuZGVtZW50OiBBbWVuZGVtZW50LFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYW1lbmRlbWVudC51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGFtZW5kZW1lbnQudWlkKVxuXG4gICAgY29uc3Qgc2lnbmF0YWlyZXMgPSBhbWVuZGVtZW50LnNpZ25hdGFpcmVzXG4gICAgY29uc3QgYXV0ZXVyID0gc2lnbmF0YWlyZXMuYXV0ZXVyXG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhdXRldXIuYWN0ZXVyUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYXV0ZXVyLmFjdGV1clJlZl1cbiAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBhdXRldXJSYXBwb3J0ZXVyT3JnYW5lID1cbiAgICAgICAgZGF0YS5vcmdhbmVCeVVpZFthdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZl1cbiAgICAgIGlmIChhdXRldXJSYXBwb3J0ZXVyT3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmF1dGV1clJhcHBvcnRldXJPcmdhbmUgPSBhdXRldXJSYXBwb3J0ZXVyT3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYXV0ZXVyLmdvdXZlcm5lbWVudFJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBnb3V2ZXJuZW1lbnQgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5nb3V2ZXJuZW1lbnRSZWZdXG4gICAgICBpZiAoZ291dmVybmVtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmdvdXZlcm5lbWVudCA9IGdvdXZlcm5lbWVudFxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKGdvdXZlcm5lbWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5ncm91cGVQb2xpdGlxdWVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZSA9IG9yZ2FuZVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZXNSZWZzID0gc2lnbmF0YWlyZXMuY29zaWduYXRhaXJlc1JlZnNcbiAgICAgIGlmIChjb3NpZ25hdGFpcmVzUmVmcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZXMgPSBbXVxuICAgICAgICBmb3IgKGNvbnN0IGNvc2lnbmF0YWlyZVJlZiBvZiBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzUmVmcyB8fCBbXSkge1xuICAgICAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZSA9IGRhdGEuYWN0ZXVyQnlVaWRbY29zaWduYXRhaXJlUmVmXVxuICAgICAgICAgIGlmIChjb3NpZ25hdGFpcmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29zaWduYXRhaXJlcy5wdXNoKGNvc2lnbmF0YWlyZSlcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoY29zaWduYXRhaXJlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2lnbmF0YWlyZXMuY29zaWduYXRhaXJlcyA9IGNvc2lnbmF0YWlyZXNcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYW1lbmRlbWVudFxufVxuXG5mdW5jdGlvbiBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoXG4gIGRpdmlzaW9uOiBEaXZpc2lvbixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGZvciAoY29uc3QgYXV0ZXVyIG9mIGRpdmlzaW9uLmF1dGV1cnMpIHtcbiAgICBjb25zdCBhY3RldXJTdW1tYXJ5ID0gYXV0ZXVyLmFjdGV1clxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZXVyU3VtbWFyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthdXRldXIub3JnYW5lUmVmXVxuICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1dGV1ci5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChkYXRhLmRvc3NpZXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZG9zc2llciA9IGRhdGEuZG9zc2llckJ5VWlkW2RpdmlzaW9uLmRvc3NpZXJSZWZdXG4gICAgaWYgKGRvc3NpZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZGl2aXNpb24uZG9zc2llciA9IGRvc3NpZXJcbiAgICAgIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKGRvc3NpZXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgY2hpbGREaXZpc2lvbiBvZiBkaXZpc2lvbi5kaXZpc2lvbnMgfHwgW10pIHtcbiAgICBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoY2hpbGREaXZpc2lvbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gIH1cblxuICByZXR1cm4gZGl2aXNpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhcbiAgZG9jdW1lbnQ6IERvY3VtZW50LFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoZG9jdW1lbnQudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChkb2N1bWVudC51aWQpXG5cbiAgICBmb3IgKGNvbnN0IGF1dGV1ciBvZiBkb2N1bWVudC5hdXRldXJzKSB7XG4gICAgICBjb25zdCBhY3RldXJTdW1tYXJ5ID0gYXV0ZXVyLmFjdGV1clxuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhdXRldXIub3JnYW5lUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthdXRldXIub3JnYW5lUmVmXVxuICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhdXRldXIub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuZG9zc2llckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGRvc3NpZXIgPSBkYXRhLmRvc3NpZXJCeVVpZFtkb2N1bWVudC5kb3NzaWVyUmVmXVxuICAgICAgaWYgKGRvc3NpZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkb2N1bWVudC5kb3NzaWVyID0gZG9zc2llclxuICAgICAgICBpbnNlcnREb3NzaWVyUmVmZXJlbmNlcyhkb3NzaWVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGRpdmlzaW9uIG9mIGRvY3VtZW50LmRpdmlzaW9ucyB8fCBbXSkge1xuICAgICAgaW5zZXJ0RGl2aXNpb25SZWZlcmVuY2VzKGRpdmlzaW9uLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZG9jdW1lbnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKFxuICBkb3NzaWVyOiBEb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKGRvc3NpZXIudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChkb3NzaWVyLnVpZClcblxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBkb3NzaWVyLmFjdGVzTGVnaXNsYXRpZnMgPz8gW10pIHtcbiAgICAgIGluc2VydEFjdGVMZWdpc2xhdGlmUmVmZXJlbmNlcyhhY3RlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG5cbiAgICBjb25zdCBpbml0aWF0ZXVyID0gZG9zc2llci5pbml0aWF0ZXVyXG4gICAgaWYgKGluaXRpYXRldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGV1clN1bW1hcnkgb2YgaW5pdGlhdGV1ci5hY3RldXJzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5Lm1hbmRhdFJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1hbmRhdCBvZiBhY3RldXIubWFuZGF0cyB8fCBbXSkge1xuICAgICAgICAgICAgICBpZiAobWFuZGF0LnVpZCA9PT0gYWN0ZXVyU3VtbWFyeS5tYW5kYXRSZWYpIHtcbiAgICAgICAgICAgICAgICBhY3RldXJTdW1tYXJ5Lm1hbmRhdCA9IG1hbmRhdFxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGluaXRpYXRldXIub3JnYW5lUmVmICE9PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2luaXRpYXRldXIub3JnYW5lUmVmXVxuICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpbml0aWF0ZXVyLm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkb3NzaWVyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKFxuICBvcmdhbmU6IE9yZ2FuZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKG9yZ2FuZS51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKG9yZ2FuZS51aWQpXG5cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIG9yZ2FuZS5vcmdhbmVQYXJlbnRSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3Qgb3JnYW5lUGFyZW50ID0gZGF0YS5vcmdhbmVCeVVpZFtvcmdhbmUub3JnYW5lUGFyZW50UmVmXVxuICAgICAgaWYgKG9yZ2FuZVBhcmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9yZ2FuZS5vcmdhbmVQYXJlbnQgPSBvcmdhbmVQYXJlbnRcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmVQYXJlbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE9cbiAgfVxuXG4gIHJldHVybiBvcmdhbmVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydFJldW5pb25SZWZlcmVuY2VzKFxuICByZXVuaW9uOiBSZXVuaW9uLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMocmV1bmlvbi51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKHJldW5pb24udWlkKVxuXG4gICAgY29uc3QgZGVtYW5kZXVycyA9IHJldW5pb24uZGVtYW5kZXVyc1xuICAgIGlmIChkZW1hbmRldXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBhY3RldXJTdW1tYXJ5IG9mIGRlbWFuZGV1cnMuYWN0ZXVycyB8fCBbXSkge1xuICAgICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYWN0ZXVyU3VtbWFyeS5hY3RldXJSZWZdXG4gICAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhY3RldXJTdW1tYXJ5LmFjdGV1ciA9IGFjdGV1clxuICAgICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBvcmdhbmVTdW1tYXJ5ID0gZGVtYW5kZXVycy5vcmdhbmVcbiAgICAgICAgaWYgKG9yZ2FuZVN1bW1hcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbb3JnYW5lU3VtbWFyeS5vcmdhbmVSZWZdXG4gICAgICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBvcmdhbmVTdW1tYXJ5Lm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHJldW5pb24ub3JnYW5lUmV1bmlSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3Qgb3JnYW5lUmV1bmkgPSBkYXRhLm9yZ2FuZUJ5VWlkW3JldW5pb24ub3JnYW5lUmV1bmlSZWZdXG4gICAgICBpZiAob3JnYW5lUmV1bmkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXVuaW9uLm9yZ2FuZVJldW5pID0gb3JnYW5lUmV1bmlcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmVSZXVuaSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHBhcnRpY2lwYW50cyA9IHJldW5pb24ucGFydGljaXBhbnRzXG4gICAgICBpZiAocGFydGljaXBhbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBwYXJ0aWNpcGFudEludGVybmUgb2YgcGFydGljaXBhbnRzLnBhcnRpY2lwYW50c0ludGVybmVzIHx8XG4gICAgICAgICAgW10pIHtcbiAgICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW3BhcnRpY2lwYW50SW50ZXJuZS5hY3RldXJSZWZdXG4gICAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBwYXJ0aWNpcGFudEludGVybmUuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldW5pb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydFNjcnV0aW5SZWZlcmVuY2VzKFxuICBzY3J1dGluOiBTY3J1dGluLFxuICBfZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKHNjcnV0aW4udWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChzY3J1dGluLnVpZClcblxuICAgIC8vIFRPRE9cbiAgfVxuXG4gIHJldHVybiBzY3J1dGluXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQSxTQUFTQSw4QkFBOEJBLENBQ3JDQyxJQUFvQixFQUNwQkMsSUFBZ0IsRUFDaEJDLFdBQXdCLEVBQ3hCO0VBQ0EsSUFBSSxDQUFDQSxXQUFXLENBQUNDLEdBQUcsQ0FBQ0gsSUFBSSxDQUFDSSxHQUFHLENBQUMsRUFBRTtJQUM5QkYsV0FBVyxDQUFDRyxHQUFHLENBQUNMLElBQUksQ0FBQ0ksR0FBRyxDQUFDO0lBRXpCLElBQ0VILElBQUksQ0FBQ0ssYUFBYSxLQUFLQyxTQUFTLElBQ2hDUCxJQUFJLENBQUNRLGdDQUFnQyxLQUFLRCxTQUFTLEVBQ25EO01BQ0Es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