Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

transformalizer

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

transformalizer - npm Package Compare versions

Comparing version 0.1.1 to 0.1.2

10

CHANGELOG.md

@@ -5,2 +5,12 @@ # Change Log

<a name="0.1.2"></a>
## [0.1.2](https://github.com/GaiamTV/transformalizer/compare/v0.1.1...v0.1.2) (2017-02-09)
### Bug Fixes
* **no-attributes:** dont throw during transform if no attributes hook defined ([e1b272d](https://github.com/GaiamTV/transformalizer/commit/e1b272d))
<a name="0.1.1"></a>

@@ -7,0 +17,0 @@ ## [0.1.1](https://github.com/GaiamTV/transformalizer/compare/v0.1.0...v0.1.1) (2017-02-08)

9

dist/transformalizer.js

@@ -242,4 +242,7 @@ 'use strict';

var attributes = dataSchema.schema.data.attributes(others);
return attributes;
if (dataSchema.schema.data.attributes) {
var attributes = dataSchema.schema.data.attributes(others);
return attributes;
}
return undefined;
}

@@ -491,2 +494,2 @@

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi90cmFuc2Zvcm1hbGl6ZXIuanMiXSwibmFtZXMiOlsiY3JlYXRlVHJhbnNmb3JtYWxpemVyIiwiYmFzZU9wdGlvbnMiLCJyZWdpc3RyeSIsInJlZ2lzdGVyIiwibmFtZSIsInNjaGVtYSIsInNjaGVtYU9wdGlvbnMiLCJvcHRpb25zIiwiRXJyb3IiLCJ1bmRlZmluZWQiLCJ0cmFuc2Zvcm0iLCJzb3VyY2UiLCJvcHRzIiwiZG9jU2NoZW1hIiwiT2JqZWN0IiwiYXNzaWduIiwiaW5jbHVkZSIsImNyZWF0ZUluY2x1ZGUiLCJkYXRhIiwidHJhbnNmb3JtU291cmNlIiwiaW5jbHVkZWQiLCJnZXQiLCJkb2N1bWVudCIsImpzb25hcGkiLCJ2ZXJzaW9uIiwidG9wTGV2ZWwiLCJmb3JFYWNoIiwicHJvcCIsInJlc3VsdCIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJ0cmFuc2Zvcm1EYXRhIiwiX3R5cGUiLCJfaWQiLCJkYXRhU2NoZW1hIiwicGFyYW1zIiwidHlwZSIsImdldFR5cGUiLCJpZCIsImdldElkIiwiYXR0cmlidXRlcyIsImdldEF0dHJpYnV0ZXMiLCJyZWxhdGlvbnNoaXBzIiwiZ2V0UmVsYXRpb25zaGlwcyIsImxpbmtzIiwiZ2V0TGlua3MiLCJtZXRhIiwiZ2V0TWV0YSIsInJlc291cmNlIiwib3RoZXJzIiwicmVsU2NoZW1hIiwia2V5cyIsInJlZHVjZSIsIm1lbW8iLCJrZXkiLCJmbiIsInJlbGF0aW9uc2hpcCIsImdldFJlbGF0aW9uc2hpcCIsImludmFsaWREYXRhIiwidHJhbnNmb3JtUmVsYXRpb25zaGlwRGF0YSIsIml0ZW0iLCJleGlzdHMiLCJhbHJlYWR5SW5jbHVkZWQiLCJwdXNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O2tCQWV3QkEscUI7O0FBZnhCOzs7O0FBRUE7Ozs7OztBQVFBOzs7OztBQUtlLFNBQVNBLHFCQUFULEdBQWlEO0FBQUEsTUFBbEJDLFdBQWtCLHVFQUFKLEVBQUk7O0FBQzlELE1BQU1DLFdBQVcsRUFBakI7O0FBRUE7Ozs7Ozs7O0FBUUEsV0FBU0MsUUFBVCxPQUE0RDtBQUFBLFFBQXhDQyxJQUF3QyxRQUF4Q0EsSUFBd0M7QUFBQSxRQUFsQ0MsTUFBa0MsUUFBbENBLE1BQWtDO0FBQUEsUUFBakJDLGFBQWlCLFFBQTFCQyxPQUEwQjs7QUFDMUQsUUFBSSxDQUFDLHFCQUFTSCxJQUFULENBQUwsRUFBcUI7QUFDbkIsWUFBTSxJQUFJSSxLQUFKLENBQVUsc0NBQVYsQ0FBTjtBQUNEO0FBQ0ROLGFBQVNFLElBQVQsSUFBaUI7QUFDZkMsY0FBUSwyQkFBZSxFQUFFRCxVQUFGLEVBQVFDLGNBQVIsRUFBZixDQURPO0FBRWZFLGVBQVNEO0FBRk0sS0FBakI7QUFJQSxXQUFPRyxTQUFQO0FBQ0Q7O0FBRUQ7Ozs7Ozs7O0FBUUEsV0FBU0MsU0FBVCxRQUFvRDtBQUFBLFFBQS9CTixJQUErQixTQUEvQkEsSUFBK0I7QUFBQSxRQUF6Qk8sTUFBeUIsU0FBekJBLE1BQXlCO0FBQUEsUUFBUkMsSUFBUSxTQUFqQkwsT0FBaUI7O0FBQ2xELFFBQUksQ0FBQyxxQkFBU0gsSUFBVCxDQUFMLEVBQXFCO0FBQ25CLFlBQU0sMEJBQW1CLHNDQUFuQixFQUEyRCxFQUFFQSxVQUFGLEVBQVFPLGNBQVIsRUFBZ0JKLFNBQVNLLElBQXpCLEVBQTNELENBQU47QUFDRDtBQUNELFFBQU1DLFlBQVlYLFNBQVNFLElBQVQsQ0FBbEI7QUFDQSxRQUFJLENBQUNTLFNBQUwsRUFBZ0I7QUFDZCxZQUFNLCtDQUFzQ1QsSUFBdEMsRUFBOEMsRUFBRUEsVUFBRixFQUFRTyxjQUFSLEVBQWdCSixTQUFTSyxJQUF6QixFQUE5QyxDQUFOO0FBQ0Q7QUFDRCxRQUFNTCxVQUFVLHFCQUFNTyxPQUFPQyxNQUFQLENBQWMsRUFBZCxFQUFrQmQsV0FBbEIsRUFBK0JXLElBQS9CLENBQU4sQ0FBaEI7QUFDQSxRQUFNSSxVQUFVQyxjQUFjLEVBQUVOLGNBQUYsRUFBVUosU0FBU0ssSUFBbkIsRUFBZCxDQUFoQjtBQUNBLFFBQU1NLE9BQU9DLGdCQUFnQixFQUFFTixvQkFBRixFQUFhRixjQUFiLEVBQXFCSixTQUFTSyxJQUE5QixFQUFvQ0ksZ0JBQXBDLEVBQWhCLENBQWI7QUFDQSxRQUFNSSxXQUFXSixRQUFRSyxHQUFSLEVBQWpCO0FBQ0EsUUFBTUMsV0FBVztBQUNmQyxlQUFTO0FBQ1BDLGlCQUFTO0FBREY7QUFETSxLQUFqQjtBQUtBO0FBQ0EsUUFBTUMsV0FBVyxDQUFDLE9BQUQsRUFBVSxNQUFWLENBQWpCO0FBQ0FBLGFBQVNDLE9BQVQsQ0FBaUIsVUFBQ0MsSUFBRCxFQUFVO0FBQ3pCLFVBQUlkLFVBQVVSLE1BQVYsQ0FBaUJzQixJQUFqQixDQUFKLEVBQTRCO0FBQzFCLFlBQU1DLFNBQVNmLFVBQVVSLE1BQVYsQ0FBaUJzQixJQUFqQixFQUF1QixFQUFFaEIsY0FBRixFQUFVSixnQkFBVixFQUFtQlcsVUFBbkIsRUFBeUJFLGtCQUF6QixFQUF2QixDQUFmO0FBQ0EsWUFBSSxxQkFBU1EsTUFBVCxDQUFKLEVBQXNCO0FBQ3BCTixtQkFBU0ssSUFBVCxJQUFpQkMsTUFBakI7QUFDRDtBQUNGO0FBQ0YsS0FQRDtBQVFBTixhQUFTSixJQUFULEdBQWdCQSxJQUFoQjtBQUNBLFFBQUlFLFNBQVNTLE1BQWIsRUFBcUI7QUFDbkJQLGVBQVNGLFFBQVQsR0FBb0JBLFFBQXBCO0FBQ0Q7QUFDRCxXQUFPRSxRQUFQO0FBQ0Q7O0FBRUQ7Ozs7Ozs7OztBQVNBLFdBQVNILGVBQVQsQ0FBeUJXLElBQXpCLEVBQStCO0FBQUEsUUFDckJqQixTQURxQixHQUN5QmlCLElBRHpCLENBQ3JCakIsU0FEcUI7QUFBQSxRQUNWRixNQURVLEdBQ3lCbUIsSUFEekIsQ0FDVm5CLE1BRFU7QUFBQSxRQUNPQyxJQURQLEdBQ3lCa0IsSUFEekIsQ0FDRnZCLE9BREU7QUFBQSxRQUNhUyxPQURiLEdBQ3lCYyxJQUR6QixDQUNhZCxPQURiO0FBRTdCOztBQUNBLFFBQUllLE1BQU1DLE9BQU4sQ0FBY3JCLE1BQWQsQ0FBSixFQUEyQjtBQUN6QixhQUFPQSxPQUFPc0IsR0FBUCxDQUFXO0FBQUEsZUFBUUMsY0FBYyxFQUFFckIsb0JBQUYsRUFBYUYsY0FBYixFQUFxQkosU0FBU0ssSUFBOUIsRUFBb0NNLFVBQXBDLEVBQTBDRixnQkFBMUMsRUFBZCxDQUFSO0FBQUEsT0FBWCxDQUFQO0FBQ0Q7QUFDRCxXQUFPa0IsY0FBYyxFQUFFckIsb0JBQUYsRUFBYUYsY0FBYixFQUFxQkosU0FBU0ssSUFBOUIsRUFBb0NNLE1BQU1QLE1BQTFDLEVBQWtESyxnQkFBbEQsRUFBZCxDQUFQO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7OztBQVlBLFdBQVNrQixhQUFULENBQXVCSixJQUF2QixFQUE2QjtBQUFBLFFBQ25CakIsU0FEbUIsR0FDNkNpQixJQUQ3QyxDQUNuQmpCLFNBRG1CO0FBQUEsUUFDUkYsTUFEUSxHQUM2Q21CLElBRDdDLENBQ1JuQixNQURRO0FBQUEsUUFDU0MsSUFEVCxHQUM2Q2tCLElBRDdDLENBQ0F2QixPQURBO0FBQUEsUUFDZVcsSUFEZixHQUM2Q1ksSUFEN0MsQ0FDZVosSUFEZjtBQUFBLFFBQ3FCRixPQURyQixHQUM2Q2MsSUFEN0MsQ0FDcUJkLE9BRHJCO0FBQUEsUUFDOEJtQixLQUQ5QixHQUM2Q0wsSUFEN0MsQ0FDOEJLLEtBRDlCO0FBQUEsUUFDcUNDLEdBRHJDLEdBQzZDTixJQUQ3QyxDQUNxQ00sR0FEckM7QUFFM0I7O0FBQ0EsUUFBSUMsYUFBYXhCLFNBQWpCO0FBQ0EsUUFBSSx1QkFBV0EsVUFBVVIsTUFBVixDQUFpQmEsSUFBakIsQ0FBc0JtQixVQUFqQyxDQUFKLEVBQWtEO0FBQ2hELFVBQU1qQyxPQUFPUyxVQUFVUixNQUFWLENBQWlCYSxJQUFqQixDQUFzQm1CLFVBQXRCLENBQWlDLEVBQUUxQixjQUFGLEVBQVVPLFVBQVYsRUFBZ0JYLFNBQVNLLElBQXpCLEVBQWpDLENBQWI7QUFDQSxVQUFJUixTQUFTUyxVQUFVVCxJQUF2QixFQUE2QjtBQUMzQmlDLHFCQUFhbkMsU0FBU0UsSUFBVCxDQUFiO0FBQ0EsWUFBSSxDQUFDaUMsVUFBTCxFQUFpQjtBQUNmLGdCQUFNLElBQUk3QixLQUFKLHNCQUE2QkosSUFBN0IsQ0FBTjtBQUNEO0FBQ0Y7QUFDRjtBQUNELFFBQU1HLFVBQVUscUJBQU1PLE9BQU9DLE1BQVAsQ0FBYyxFQUFkLEVBQWtCZCxXQUFsQixFQUErQlcsSUFBL0IsQ0FBTixDQUFoQjtBQUNBLFFBQU0wQixTQUFTLEVBQUVELHNCQUFGLEVBQWMxQixjQUFkLEVBQXNCSixnQkFBdEIsRUFBK0JXLFVBQS9CLEVBQWY7QUFDQSxRQUFNcUIsT0FBT0QsT0FBT0MsSUFBUCxHQUFjSixTQUFTSyxRQUFRRixNQUFSLENBQXBDO0FBQ0EsUUFBTUcsS0FBS0gsT0FBT0csRUFBUCxHQUFZTCxPQUFPTSxNQUFNSixNQUFOLENBQTlCO0FBQ0EsUUFBTUssYUFBYUwsT0FBT0ssVUFBUCxHQUFvQkMsY0FBY04sTUFBZCxDQUF2QztBQUNBLFFBQU1PLGdCQUFnQlAsT0FBT08sYUFBUCxHQUF1QkMsNEJBQW1COUIsZ0JBQW5CLElBQStCc0IsTUFBL0IsRUFBN0M7QUFDQSxRQUFNUyxRQUFRVCxPQUFPUyxLQUFQLEdBQWVDLFNBQVNWLE1BQVQsQ0FBN0I7QUFDQSxRQUFNVyxPQUFPWCxPQUFPVyxJQUFQLEdBQWNDLFFBQVFaLE1BQVIsQ0FBM0I7QUFDQTtBQUNBLFFBQU1hLFdBQVcsRUFBRVosVUFBRixFQUFRRSxNQUFSLEVBQWpCO0FBQ0EsUUFBSSxxQkFBU0UsVUFBVCxDQUFKLEVBQTBCO0FBQ3hCUSxlQUFTUixVQUFULEdBQXNCQSxVQUF0QjtBQUNEO0FBQ0QsUUFBSSxxQkFBU0UsYUFBVCxDQUFKLEVBQTZCO0FBQzNCTSxlQUFTTixhQUFULEdBQXlCQSxhQUF6QjtBQUNEO0FBQ0QsUUFBSSxxQkFBU0ksSUFBVCxDQUFKLEVBQW9CO0FBQ2xCRSxlQUFTRixJQUFULEdBQWdCQSxJQUFoQjtBQUNEO0FBQ0QsUUFBSSxxQkFBU0YsS0FBVCxDQUFKLEVBQXFCO0FBQ25CSSxlQUFTSixLQUFULEdBQWlCQSxLQUFqQjtBQUNEO0FBQ0QsV0FBT0ksUUFBUDtBQUNEOztBQUVEOzs7Ozs7Ozs7O0FBVUEsV0FBU1gsT0FBVCxDQUFpQlYsSUFBakIsRUFBdUI7QUFBQSxRQUNiTyxVQURhLEdBQ2FQLElBRGIsQ0FDYk8sVUFEYTtBQUFBLFFBQ0VlLE1BREYsNEJBQ2F0QixJQURiOztBQUVyQixRQUFNUyxPQUFPRixXQUFXaEMsTUFBWCxDQUFrQmEsSUFBbEIsQ0FBdUJxQixJQUF2QixDQUE0QmEsTUFBNUIsQ0FBYjtBQUNBLFFBQUksQ0FBQyxxQkFBU2IsSUFBVCxDQUFMLEVBQXFCO0FBQ25CLFlBQU0sMEJBQW1CLGNBQW5CLEVBQW1DVCxJQUFuQyxDQUFOO0FBQ0Q7QUFDRCxXQUFPUyxJQUFQO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7O0FBV0EsV0FBU0csS0FBVCxDQUFlWixJQUFmLEVBQXFCO0FBQUEsUUFDWE8sVUFEVyxHQUNlUCxJQURmLENBQ1hPLFVBRFc7QUFBQSxRQUNJZSxNQURKLDRCQUNldEIsSUFEZjs7QUFFbkIsUUFBTVcsS0FBS0osV0FBV2hDLE1BQVgsQ0FBa0JhLElBQWxCLENBQXVCdUIsRUFBdkIsQ0FBMEJXLE1BQTFCLENBQVg7QUFDQSxRQUFJLENBQUMscUJBQVNYLEVBQVQsQ0FBTCxFQUFtQjtBQUNqQixZQUFNLDBCQUFtQixZQUFuQixFQUFpQ1gsSUFBakMsQ0FBTjtBQUNEO0FBQ0QsV0FBT1csRUFBUDtBQUNEOztBQUVEOzs7Ozs7Ozs7Ozs7QUFZQSxXQUFTRyxhQUFULENBQXVCZCxJQUF2QixFQUE2QjtBQUFBLFFBQ25CTyxVQURtQixHQUNPUCxJQURQLENBQ25CTyxVQURtQjtBQUFBLFFBQ0plLE1BREksNEJBQ090QixJQURQOztBQUUzQixRQUFNYSxhQUFhTixXQUFXaEMsTUFBWCxDQUFrQmEsSUFBbEIsQ0FBdUJ5QixVQUF2QixDQUFrQ1MsTUFBbEMsQ0FBbkI7QUFDQSxXQUFPVCxVQUFQO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0FBY0EsV0FBU0csZ0JBQVQsQ0FBMEJoQixJQUExQixFQUFnQztBQUFBLFFBQ3RCTyxVQURzQixHQUNJUCxJQURKLENBQ3RCTyxVQURzQjtBQUFBLFFBQ1BlLE1BRE8sNEJBQ0l0QixJQURKOztBQUU5QixRQUFNdUIsWUFBWWhCLFdBQVdoQyxNQUFYLENBQWtCYSxJQUFsQixDQUF1QjJCLGFBQXpDO0FBQ0EsUUFBSVEsU0FBSixFQUFlO0FBQ2IsVUFBTUMsT0FBT3hDLE9BQU93QyxJQUFQLENBQVlELFNBQVosQ0FBYjtBQUNBLFVBQU1SLGdCQUFnQlMsS0FBS0MsTUFBTCxDQUFZLFVBQUNDLElBQUQsRUFBT0MsR0FBUCxFQUFlO0FBQy9DLFlBQU1DLEtBQUtMLFVBQVVJLEdBQVYsQ0FBWDtBQUNBLFlBQU1FLGVBQWVDLDJCQUFrQkYsTUFBbEIsSUFBeUJOLE1BQXpCLEVBQXJCO0FBQ0EsWUFBSSxxQkFBU08sWUFBVCxDQUFKLEVBQTRCO0FBQzFCSCxlQUFLQyxHQUFMLElBQVlFLFlBQVo7QUFDRDtBQUNELGVBQU9ILElBQVA7QUFDRCxPQVBxQixFQU9uQixFQVBtQixDQUF0QjtBQVFBLFVBQUksQ0FBQzFDLE9BQU93QyxJQUFQLENBQVlULGFBQVosRUFBMkJoQixNQUFoQyxFQUF3QztBQUN0QyxlQUFPcEIsU0FBUDtBQUNEO0FBQ0QsYUFBT29DLGFBQVA7QUFDRDtBQUNELFdBQU9wQyxTQUFQO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztBQWVBLFdBQVNtRCxlQUFULENBQXlCOUIsSUFBekIsRUFBK0I7QUFBQSxRQUNyQjRCLEVBRHFCLEdBQ001QixJQUROLENBQ3JCNEIsRUFEcUI7QUFBQSxRQUNqQjFDLE9BRGlCLEdBQ01jLElBRE4sQ0FDakJkLE9BRGlCO0FBQUEsUUFDTG9DLE1BREssNEJBQ010QixJQUROOztBQUU3QixRQUFNRixTQUFTOEIsR0FBR04sTUFBSCxDQUFmO0FBQ0EsUUFBSSxDQUFDLHFCQUFTeEIsTUFBVCxDQUFMLEVBQXVCO0FBQ3JCLGFBQU9uQixTQUFQO0FBQ0Q7QUFMNEIsUUFNckJ3QyxJQU5xQixHQU1DckIsTUFORCxDQU1yQnFCLElBTnFCO0FBQUEsUUFNZkYsS0FOZSxHQU1DbkIsTUFORCxDQU1mbUIsS0FOZTtBQUFBLFFBTVI3QixJQU5RLEdBTUNVLE1BTkQsQ0FNUlYsSUFOUTs7QUFPN0IsUUFBTTJDLGNBQWMsQ0FBQzNDLElBQUQsSUFBUyxRQUFPQSxJQUFQLHlDQUFPQSxJQUFQLE9BQWdCLFFBQTdDO0FBQ0EsUUFBSSxDQUFDNkIsS0FBRCxJQUFVLENBQUNFLElBQVgsSUFBbUJZLFdBQXZCLEVBQW9DO0FBQ2xDLGFBQU9wRCxTQUFQO0FBQ0Q7QUFDRCxRQUFNa0QsZUFBZSxFQUFyQjtBQUNBLFFBQUksQ0FBQ0UsV0FBTCxFQUFrQjtBQUNoQixVQUFJOUIsTUFBTUMsT0FBTixDQUFjZCxJQUFkLENBQUosRUFBeUI7QUFDdkJ5QyxxQkFBYXpDLElBQWIsR0FBb0JBLEtBQUtlLEdBQUwsQ0FBUztBQUFBLGlCQUFRNkIsMEJBQTBCO0FBQzdEQyxzQkFENkQ7QUFFN0RwRCxvQkFBUW1CLEtBQUtuQixNQUZnRDtBQUc3REoscUJBQVN1QixLQUFLdkIsT0FIK0M7QUFJN0RTO0FBSjZELFdBQTFCLENBQVI7QUFBQSxTQUFULENBQXBCO0FBTUQsT0FQRCxNQU9PO0FBQ0wyQyxxQkFBYXpDLElBQWIsR0FBb0I0QywwQkFBMEI7QUFDNUNDLGdCQUFNN0MsSUFEc0M7QUFFNUNQLGtCQUFRbUIsS0FBS25CLE1BRitCO0FBRzVDSixtQkFBU3VCLEtBQUt2QixPQUg4QjtBQUk1Q1M7QUFKNEMsU0FBMUIsQ0FBcEI7QUFNRDtBQUNGO0FBQ0QsUUFBSSxxQkFBU2lDLElBQVQsQ0FBSixFQUFvQjtBQUNsQlUsbUJBQWFWLElBQWIsR0FBb0JBLElBQXBCO0FBQ0Q7QUFDRCxRQUFJLHFCQUFTRixLQUFULENBQUosRUFBcUI7QUFDbkJZLG1CQUFhWixLQUFiLEdBQXFCQSxLQUFyQjtBQUNEO0FBQ0QsV0FBT1ksWUFBUDtBQUNEOztBQUVEOzs7Ozs7Ozs7OztBQVdBLFdBQVNHLHlCQUFULENBQW1DaEMsSUFBbkMsRUFBeUM7QUFBQSxRQUMvQmlDLElBRCtCLEdBQ0lqQyxJQURKLENBQy9CaUMsSUFEK0I7QUFBQSxRQUN6QnBELE1BRHlCLEdBQ0ltQixJQURKLENBQ3pCbkIsTUFEeUI7QUFBQSxRQUNqQkosT0FEaUIsR0FDSXVCLElBREosQ0FDakJ2QixPQURpQjtBQUFBLFFBQ1JTLE9BRFEsR0FDSWMsSUFESixDQUNSZCxPQURRO0FBQUEsUUFFL0JaLElBRitCLEdBRUEyRCxJQUZBLENBRS9CM0QsSUFGK0I7QUFBQSxRQUV6QmMsSUFGeUIsR0FFQTZDLElBRkEsQ0FFekI3QyxJQUZ5QjtBQUFBLFFBRW5CRSxRQUZtQixHQUVBMkMsSUFGQSxDQUVuQjNDLFFBRm1CO0FBQUEsUUFFVDZCLElBRlMsR0FFQWMsSUFGQSxDQUVUZCxJQUZTOztBQUd2QyxRQUFJLENBQUMscUJBQVM3QyxJQUFULENBQUQsSUFBbUIsQ0FBQ0YsU0FBU0UsSUFBVCxDQUF4QixFQUF3QztBQUN0QyxZQUFNLCtDQUFzQ0EsSUFBdEMsRUFBOEMwQixJQUE5QyxDQUFOO0FBQ0Q7QUFDRCxRQUFNdUIsWUFBWW5ELFNBQVNFLElBQVQsQ0FBbEI7QUFDQSxRQUFNbUMsT0FBT0MsUUFBUSxFQUFFSCxZQUFZZ0IsU0FBZCxFQUF5QjFDLGNBQXpCLEVBQWlDSixnQkFBakMsRUFBMENXLFVBQTFDLEVBQVIsQ0FBYjtBQUNBLFFBQU11QixLQUFLQyxNQUFNLEVBQUVMLFlBQVlnQixTQUFkLEVBQXlCMUMsY0FBekIsRUFBaUNKLGdCQUFqQyxFQUEwQ1csVUFBMUMsRUFBTixDQUFYO0FBQ0EsUUFBTVUsU0FBUyxFQUFFVyxVQUFGLEVBQVFFLE1BQVIsRUFBZjtBQUNBLFFBQUkscUJBQVNRLElBQVQsQ0FBSixFQUFvQjtBQUNsQnJCLGFBQU9xQixJQUFQLEdBQWNBLElBQWQ7QUFDRDtBQUNELFFBQUk3QixhQUFhLElBQWIsSUFBcUIsQ0FBQ0osUUFBUWdELE1BQVIsQ0FBZSxFQUFFekIsVUFBRixFQUFRRSxNQUFSLEVBQWYsQ0FBMUIsRUFBd0Q7QUFDdEQsVUFBTVUsV0FBV2pCLGNBQWM7QUFDN0JyQixtQkFBV3dDLFNBRGtCO0FBRTdCMUMsc0JBRjZCO0FBRzdCSix3QkFINkI7QUFJN0JXLGtCQUo2QjtBQUs3QkYsd0JBTDZCO0FBTTdCbUIsZUFBT0ksSUFOc0I7QUFPN0JILGFBQUtLO0FBUHdCLE9BQWQsQ0FBakI7QUFTQXpCLGNBQVFBLE9BQVIsQ0FBZ0JtQyxRQUFoQjtBQUNEO0FBQ0QsV0FBT3ZCLE1BQVA7QUFDRDs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7QUFjQSxXQUFTb0IsUUFBVCxDQUFrQmxCLElBQWxCLEVBQXdCO0FBQUEsUUFDZE8sVUFEYyxHQUNZUCxJQURaLENBQ2RPLFVBRGM7QUFBQSxRQUNDZSxNQURELDRCQUNZdEIsSUFEWjs7QUFFdEIsUUFBSU8sV0FBV2hDLE1BQVgsQ0FBa0JhLElBQWxCLENBQXVCNkIsS0FBM0IsRUFBa0M7QUFDaEMsYUFBT1YsV0FBV2hDLE1BQVgsQ0FBa0JhLElBQWxCLENBQXVCNkIsS0FBdkIsQ0FBNkJLLE1BQTdCLENBQVA7QUFDRDtBQUNELFdBQU8zQyxTQUFQO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztBQWVBLFdBQVN5QyxPQUFULENBQWlCcEIsSUFBakIsRUFBdUI7QUFBQSxRQUNiTyxVQURhLEdBQ2FQLElBRGIsQ0FDYk8sVUFEYTtBQUFBLFFBQ0VlLE1BREYsNEJBQ2F0QixJQURiOztBQUVyQixRQUFJTyxXQUFXaEMsTUFBWCxDQUFrQmEsSUFBbEIsQ0FBdUIrQixJQUEzQixFQUFpQztBQUMvQixhQUFPWixXQUFXaEMsTUFBWCxDQUFrQmEsSUFBbEIsQ0FBdUIrQixJQUF2QixDQUE0QkcsTUFBNUIsQ0FBUDtBQUNEO0FBQ0QsV0FBTzNDLFNBQVA7QUFDRDs7QUFFRDs7Ozs7QUFLQSxXQUFTUSxhQUFULEdBQXlCO0FBQ3ZCLFFBQU1HLFdBQVcsRUFBakI7QUFDQSxRQUFNNkMsa0JBQWtCLEVBQXhCO0FBQ0EsV0FBTztBQUNMOzs7Ozs7O0FBT0FELFlBUksseUJBUWdCO0FBQUEsWUFBWnpCLElBQVksU0FBWkEsSUFBWTtBQUFBLFlBQU5FLEVBQU0sU0FBTkEsRUFBTTs7QUFDbkIsZUFBT3dCLGdCQUFtQjFCLElBQW5CLFNBQTJCRSxFQUEzQixDQUFQO0FBQ0QsT0FWSTs7O0FBWUw7Ozs7O0FBS0F6QixhQWpCSyxtQkFpQkdtQyxRQWpCSCxFQWlCYTtBQUNoQmMsd0JBQW1CZCxTQUFTWixJQUE1QixTQUFvQ1ksU0FBU1YsRUFBN0MsSUFBcUQsSUFBckQ7QUFDQXJCLGlCQUFTOEMsSUFBVCxDQUFjZixRQUFkO0FBQ0QsT0FwQkk7OztBQXNCTDs7OztBQUlBOUIsU0ExQkssaUJBMEJDO0FBQ0osZUFBT0QsUUFBUDtBQUNEO0FBNUJJLEtBQVA7QUE4QkQ7O0FBRUQsU0FBTztBQUNMakIsc0JBREs7QUFFTE87QUFGSyxHQUFQO0FBSUQiLCJmaWxlIjoidHJhbnNmb3JtYWxpemVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNsb25lIGZyb20gJ2Nsb25lJ1xuXG5pbXBvcnQge1xuICBpc0Z1bmN0aW9uLFxuICBpc09iamVjdCxcbiAgaXNTdHJpbmcsXG4gIFRyYW5zZm9ybUVycm9yLFxuICB2YWxpZGF0ZVNjaGVtYSxcbn0gZnJvbSAnLi91dGlscydcblxuLyoqXG4gKiBUcmFuc2Zvcm1hbGl6ZXIgZmFjdG9yeSBmdW5jdGlvbi5cbiAqIEBwYXJhbSAge09iamVjdH0gW2Jhc2VPcHRpb25zPXt9XVxuICogQHJldHVybiB7T2JqZWN0fSB0cmFuc2Zvcm1hbGl6ZXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlVHJhbnNmb3JtYWxpemVyKGJhc2VPcHRpb25zID0ge30pIHtcbiAgY29uc3QgcmVnaXN0cnkgPSB7fVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIHNjaGVtYVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLm5hbWUgLSBzY2hlbWEgbmFtZS9pZFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Muc2NoZW1hIC0gc2NoZW1hIGRlZmluaXRpb25cbiAgICogQHBhcmFtICB7T2JqZWN0fSBbYXJncy5vcHRpb25zPXt9XSAtIHNjaGVtYSBvcHRpb25zIHRvIGJlIG1lcmdlZCBpbiB0byB0cmFuc2Zvcm0gb3B0aW9uc1xuICAgKiBAcmV0dXJuIHtVbmRlZmluZWR9XG4gICAqL1xuICBmdW5jdGlvbiByZWdpc3Rlcih7IG5hbWUsIHNjaGVtYSwgb3B0aW9uczogc2NoZW1hT3B0aW9ucyB9KSB7XG4gICAgaWYgKCFpc1N0cmluZyhuYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFwibmFtZVwiIFByb3BlcnR5IChub24gc3RyaW5nKScpXG4gICAgfVxuICAgIHJlZ2lzdHJ5W25hbWVdID0ge1xuICAgICAgc2NoZW1hOiB2YWxpZGF0ZVNjaGVtYSh7IG5hbWUsIHNjaGVtYSB9KSxcbiAgICAgIG9wdGlvbnM6IHNjaGVtYU9wdGlvbnMsXG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gcmF3IGRhdGEgaW50byBhIHZhbGlkIEpTT04gQVBJIGRvY3VtZW50XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MubmFtZSAtIHRoZSB0b3AgbGV2ZWwgc2NoZW1hIG5hbWVcbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZSAtIGEgc2luZ2xlIHNvdXJjZSBvYmplY3Qgb3IgYW4gYXJheSBvZiBzb3VyY2Ugb2JqZWN0c1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IFtvcHRpb25zPXt9XSAtIGZ1bmN0aW9uIGxldmVsIG9wdGlvbnNcbiAgICogQHJldHVybiB7T2JqZWN0fSBkb2N1bWVudFxuICAgKi9cbiAgZnVuY3Rpb24gdHJhbnNmb3JtKHsgbmFtZSwgc291cmNlLCBvcHRpb25zOiBvcHRzIH0pIHtcbiAgICBpZiAoIWlzU3RyaW5nKG5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtRXJyb3IoJ0ludmFsaWQgXCJuYW1lXCIgUHJvcGVydHkgKG5vbiBzdHJpbmcpJywgeyBuYW1lLCBzb3VyY2UsIG9wdGlvbnM6IG9wdHMgfSlcbiAgICB9XG4gICAgY29uc3QgZG9jU2NoZW1hID0gcmVnaXN0cnlbbmFtZV1cbiAgICBpZiAoIWRvY1NjaGVtYSkge1xuICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybUVycm9yKGBNaXNzaW5nIFNjaGVtYTogJHtuYW1lfWAsIHsgbmFtZSwgc291cmNlLCBvcHRpb25zOiBvcHRzIH0pXG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbnMgPSBjbG9uZShPYmplY3QuYXNzaWduKHt9LCBiYXNlT3B0aW9ucywgb3B0cykpXG4gICAgY29uc3QgaW5jbHVkZSA9IGNyZWF0ZUluY2x1ZGUoeyBzb3VyY2UsIG9wdGlvbnM6IG9wdHMgfSlcbiAgICBjb25zdCBkYXRhID0gdHJhbnNmb3JtU291cmNlKHsgZG9jU2NoZW1hLCBzb3VyY2UsIG9wdGlvbnM6IG9wdHMsIGluY2x1ZGUgfSlcbiAgICBjb25zdCBpbmNsdWRlZCA9IGluY2x1ZGUuZ2V0KClcbiAgICBjb25zdCBkb2N1bWVudCA9IHtcbiAgICAgIGpzb25hcGk6IHtcbiAgICAgICAgdmVyc2lvbjogJzEuMCcsXG4gICAgICB9LFxuICAgIH1cbiAgICAvLyBhZGQgdG9wIGxldmVsIHByb3BlcnRpZXMgaWYgYXZhaWxhYmxlXG4gICAgY29uc3QgdG9wTGV2ZWwgPSBbJ2xpbmtzJywgJ21ldGEnXVxuICAgIHRvcExldmVsLmZvckVhY2goKHByb3ApID0+IHtcbiAgICAgIGlmIChkb2NTY2hlbWEuc2NoZW1hW3Byb3BdKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGRvY1NjaGVtYS5zY2hlbWFbcHJvcF0oeyBzb3VyY2UsIG9wdGlvbnMsIGRhdGEsIGluY2x1ZGVkIH0pXG4gICAgICAgIGlmIChpc09iamVjdChyZXN1bHQpKSB7XG4gICAgICAgICAgZG9jdW1lbnRbcHJvcF0gPSByZXN1bHRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgZG9jdW1lbnQuZGF0YSA9IGRhdGFcbiAgICBpZiAoaW5jbHVkZWQubGVuZ3RoKSB7XG4gICAgICBkb2N1bWVudC5pbmNsdWRlZCA9IGluY2x1ZGVkXG4gICAgfVxuICAgIHJldHVybiBkb2N1bWVudFxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBzb3VyY2UgaW50byB0aGUgXCJwcmltYXJ5IGRhdGFcIiBvZiB0aGUgZG9jdW1lbnRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kb2NTY2hlbWEgLSB0aGUgdG9wIGxldmVsIHNjaGVtYSB1c2VkIGZvciB0cmFuc2Zvcm1pbmcgdGhlIGRvY3VtZW50XG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2UgLSBzb3VyY2UgZGF0YVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9ucyAtIGZ1bmN0aW9uIGxldmVsIG9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmluY2x1ZGUgLSBpbmNsdWRlIG9iamVjdFxuICAgKiBAcmV0dXJuIHtPYmplY3R8T2JqZWN0W119XG4gICAqL1xuICBmdW5jdGlvbiB0cmFuc2Zvcm1Tb3VyY2UoYXJncykge1xuICAgIGNvbnN0IHsgZG9jU2NoZW1hLCBzb3VyY2UsIG9wdGlvbnM6IG9wdHMsIGluY2x1ZGUgfSA9IGFyZ3NcbiAgICAvLyBUT0RPIGRlZmluZSBpbmNsdWRlXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHNvdXJjZS5tYXAoZGF0YSA9PiB0cmFuc2Zvcm1EYXRhKHsgZG9jU2NoZW1hLCBzb3VyY2UsIG9wdGlvbnM6IG9wdHMsIGRhdGEsIGluY2x1ZGUgfSkpXG4gICAgfVxuICAgIHJldHVybiB0cmFuc2Zvcm1EYXRhKHsgZG9jU2NoZW1hLCBzb3VyY2UsIG9wdGlvbnM6IG9wdHMsIGRhdGE6IHNvdXJjZSwgaW5jbHVkZSB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBhIHNpbmdsZSBzb3VyY2Ugb2JqZWN0IGludG8gYSB2YWxpZCByZXNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRvY1NjaGVtYSAtIHRoZSB0b3AgbGV2ZWwgc2NoZW1hIHVzZWQgZm9yIHRyYW5zZm9ybWluZyB0aGUgZG9jdW1lbnRcbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZSAtIHNvdXJjZSBkYXRhXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zIC0gZnVuY3Rpb24gbGV2ZWwgb3B0aW9uc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YSAtIGN1cnJlbnQgc291cmNlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuaW5jbHVkZSAtIGluY2x1ZGUgb2JqZWN0XG4gICAqIEBwYXJhbSAge1N0cmluZ30gW2FyZ3MuX3R5cGVdIC0gKGZvciB1c2UgYnkgdHJhbnNmb3JtUmVsYXRpb25zaGlwRGF0YSlcbiAgICogQHBhcmFtICB7U3RyaW5nfSBbYXJncy5faWRdIC0gKGZvciB1c2UgYnkgdHJhbnNmb3JtUmVsYXRpb25zaGlwRGF0YSlcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgZnVuY3Rpb24gdHJhbnNmb3JtRGF0YShhcmdzKSB7XG4gICAgY29uc3QgeyBkb2NTY2hlbWEsIHNvdXJjZSwgb3B0aW9uczogb3B0cywgZGF0YSwgaW5jbHVkZSwgX3R5cGUsIF9pZCB9ID0gYXJnc1xuICAgIC8vIGNhbGwgZGF0YVNjaGVtYSBpZiBkZWZpbmVkIGFuZCBzd2l0Y2ggY29udGV4dHMgaWYgbmVjZXNzYXJ5XG4gICAgbGV0IGRhdGFTY2hlbWEgPSBkb2NTY2hlbWFcbiAgICBpZiAoaXNGdW5jdGlvbihkb2NTY2hlbWEuc2NoZW1hLmRhdGEuZGF0YVNjaGVtYSkpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBkb2NTY2hlbWEuc2NoZW1hLmRhdGEuZGF0YVNjaGVtYSh7IHNvdXJjZSwgZGF0YSwgb3B0aW9uczogb3B0cyB9KVxuICAgICAgaWYgKG5hbWUgIT09IGRvY1NjaGVtYS5uYW1lKSB7XG4gICAgICAgIGRhdGFTY2hlbWEgPSByZWdpc3RyeVtuYW1lXVxuICAgICAgICBpZiAoIWRhdGFTY2hlbWEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgU2NoZW1hOiAke25hbWV9YClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBvcHRpb25zID0gY2xvbmUoT2JqZWN0LmFzc2lnbih7fSwgYmFzZU9wdGlvbnMsIG9wdHMpKVxuICAgIGNvbnN0IHBhcmFtcyA9IHsgZGF0YVNjaGVtYSwgc291cmNlLCBvcHRpb25zLCBkYXRhIH1cbiAgICBjb25zdCB0eXBlID0gcGFyYW1zLnR5cGUgPSBfdHlwZSB8fCBnZXRUeXBlKHBhcmFtcylcbiAgICBjb25zdCBpZCA9IHBhcmFtcy5pZCA9IF9pZCB8fCBnZXRJZChwYXJhbXMpXG4gICAgY29uc3QgYXR0cmlidXRlcyA9IHBhcmFtcy5hdHRyaWJ1dGVzID0gZ2V0QXR0cmlidXRlcyhwYXJhbXMpXG4gICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IHBhcmFtcy5yZWxhdGlvbnNoaXBzID0gZ2V0UmVsYXRpb25zaGlwcyh7IGluY2x1ZGUsIC4uLnBhcmFtcyB9KVxuICAgIGNvbnN0IGxpbmtzID0gcGFyYW1zLmxpbmtzID0gZ2V0TGlua3MocGFyYW1zKVxuICAgIGNvbnN0IG1ldGEgPSBwYXJhbXMubWV0YSA9IGdldE1ldGEocGFyYW1zKVxuICAgIC8vIGJ1aWxkIHJlc3VsdGluZyByZXNvdXJjZVxuICAgIGNvbnN0IHJlc291cmNlID0geyB0eXBlLCBpZCB9XG4gICAgaWYgKGlzT2JqZWN0KGF0dHJpYnV0ZXMpKSB7XG4gICAgICByZXNvdXJjZS5hdHRyaWJ1dGVzID0gYXR0cmlidXRlc1xuICAgIH1cbiAgICBpZiAoaXNPYmplY3QocmVsYXRpb25zaGlwcykpIHtcbiAgICAgIHJlc291cmNlLnJlbGF0aW9uc2hpcHMgPSByZWxhdGlvbnNoaXBzXG4gICAgfVxuICAgIGlmIChpc09iamVjdChtZXRhKSkge1xuICAgICAgcmVzb3VyY2UubWV0YSA9IG1ldGFcbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0KGxpbmtzKSkge1xuICAgICAgcmVzb3VyY2UubGlua3MgPSBsaW5rc1xuICAgIH1cbiAgICByZXR1cm4gcmVzb3VyY2VcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc291cmNlIHR5cGUgZm9yIHRoZSBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhU2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFcbiAgICogQHJldHVybiB7U3RyaW5nfSB0eXBlXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRUeXBlKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRhdGFTY2hlbWEsIC4uLm90aGVycyB9ID0gYXJnc1xuICAgIGNvbnN0IHR5cGUgPSBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLnR5cGUob3RoZXJzKVxuICAgIGlmICghaXNTdHJpbmcodHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FcnJvcignSW52YWxpZCB0eXBlJywgYXJncylcbiAgICB9XG4gICAgcmV0dXJuIHR5cGVcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc291cmNlIGlkIGZvciB0aGUgY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVNjaGVtYVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEByZXR1cm4ge1N0cmluZ30gaWRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGdldElkKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRhdGFTY2hlbWEsIC4uLm90aGVycyB9ID0gYXJnc1xuICAgIGNvbnN0IGlkID0gZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS5pZChvdGhlcnMpXG4gICAgaWYgKCFpc1N0cmluZyhpZCkpIHtcbiAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FcnJvcignSW52YWxpZCBpZCcsIGFyZ3MpXG4gICAgfVxuICAgIHJldHVybiBpZFxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgYXR0cmlidXRlcyBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhU2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLmlkXG4gICAqIEByZXR1cm4ge09iamVjdH0gYXR0cmlidXRlc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0QXR0cmlidXRlcyhhcmdzKSB7XG4gICAgY29uc3QgeyBkYXRhU2NoZW1hLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS5hdHRyaWJ1dGVzKG90aGVycylcbiAgICByZXR1cm4gYXR0cmlidXRlc1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgcmVsYXRpb25zaGlwcyBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhU2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLmlkXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5hdHRyaWJ1dGVzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5pbmNsdWRlXG4gICAqIEByZXR1cm4ge09iamVjdH0gcmVsYXRpb25zaGlwc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0UmVsYXRpb25zaGlwcyhhcmdzKSB7XG4gICAgY29uc3QgeyBkYXRhU2NoZW1hLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBjb25zdCByZWxTY2hlbWEgPSBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLnJlbGF0aW9uc2hpcHNcbiAgICBpZiAocmVsU2NoZW1hKSB7XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocmVsU2NoZW1hKVxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IGtleXMucmVkdWNlKChtZW1vLCBrZXkpID0+IHtcbiAgICAgICAgY29uc3QgZm4gPSByZWxTY2hlbWFba2V5XVxuICAgICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSBnZXRSZWxhdGlvbnNoaXAoeyBmbiwgLi4ub3RoZXJzIH0pXG4gICAgICAgIGlmIChpc09iamVjdChyZWxhdGlvbnNoaXApKSB7XG4gICAgICAgICAgbWVtb1trZXldID0gcmVsYXRpb25zaGlwXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lbW9cbiAgICAgIH0sIHt9KVxuICAgICAgaWYgKCFPYmplY3Qua2V5cyhyZWxhdGlvbnNoaXBzKS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlbGF0aW9uc2hpcHNcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgcmVsYXRpb25zaGlwIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgcmVsYXRpb25zaGlwIG9mIHRoZVxuICAgKiBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5mblxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5pZFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuYXR0cmlidXRlc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuaW5jbHVkZVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IHJlbGF0aW9uc2hpcFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0UmVsYXRpb25zaGlwKGFyZ3MpIHtcbiAgICBjb25zdCB7IGZuLCBpbmNsdWRlLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBjb25zdCByZXN1bHQgPSBmbihvdGhlcnMpXG4gICAgaWYgKCFpc09iamVjdChyZXN1bHQpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGNvbnN0IHsgbWV0YSwgbGlua3MsIGRhdGEgfSA9IHJlc3VsdFxuICAgIGNvbnN0IGludmFsaWREYXRhID0gIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnXG4gICAgaWYgKCFsaW5rcyAmJiAhbWV0YSAmJiBpbnZhbGlkRGF0YSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgICBjb25zdCByZWxhdGlvbnNoaXAgPSB7fVxuICAgIGlmICghaW52YWxpZERhdGEpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgIHJlbGF0aW9uc2hpcC5kYXRhID0gZGF0YS5tYXAoaXRlbSA9PiB0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhKHtcbiAgICAgICAgICBpdGVtLFxuICAgICAgICAgIHNvdXJjZTogYXJncy5zb3VyY2UsXG4gICAgICAgICAgb3B0aW9uczogYXJncy5vcHRpb25zLFxuICAgICAgICAgIGluY2x1ZGUsXG4gICAgICAgIH0pKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVsYXRpb25zaGlwLmRhdGEgPSB0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhKHtcbiAgICAgICAgICBpdGVtOiBkYXRhLFxuICAgICAgICAgIHNvdXJjZTogYXJncy5zb3VyY2UsXG4gICAgICAgICAgb3B0aW9uczogYXJncy5vcHRpb25zLFxuICAgICAgICAgIGluY2x1ZGUsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc09iamVjdChtZXRhKSkge1xuICAgICAgcmVsYXRpb25zaGlwLm1ldGEgPSBtZXRhXG4gICAgfVxuICAgIGlmIChpc09iamVjdChsaW5rcykpIHtcbiAgICAgIHJlbGF0aW9uc2hpcC5saW5rcyA9IGxpbmtzXG4gICAgfVxuICAgIHJldHVybiByZWxhdGlvbnNoaXBcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRhdGEgZm9yIHRoZSBjdXJyZW50IHJlbGF0aW9uc2hpcCBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHNvdXJjZVxuICAgKiBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5pdGVtIC0gdGhlIGN1cnJlbnQgZGF0YSBpdGVtXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7RnVuY3Rpb259IGFyZ3MuaW5jbHVkZVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IGRhdGFcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybVJlbGF0aW9uc2hpcERhdGEoYXJncykge1xuICAgIGNvbnN0IHsgaXRlbSwgc291cmNlLCBvcHRpb25zLCBpbmNsdWRlIH0gPSBhcmdzXG4gICAgY29uc3QgeyBuYW1lLCBkYXRhLCBpbmNsdWRlZCwgbWV0YSB9ID0gaXRlbVxuICAgIGlmICghaXNTdHJpbmcobmFtZSkgfHwgIXJlZ2lzdHJ5W25hbWVdKSB7XG4gICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtRXJyb3IoYE1pc3NpbmcgU2NoZW1hOiAke25hbWV9YCwgYXJncylcbiAgICB9XG4gICAgY29uc3QgcmVsU2NoZW1hID0gcmVnaXN0cnlbbmFtZV1cbiAgICBjb25zdCB0eXBlID0gZ2V0VHlwZSh7IGRhdGFTY2hlbWE6IHJlbFNjaGVtYSwgc291cmNlLCBvcHRpb25zLCBkYXRhIH0pXG4gICAgY29uc3QgaWQgPSBnZXRJZCh7IGRhdGFTY2hlbWE6IHJlbFNjaGVtYSwgc291cmNlLCBvcHRpb25zLCBkYXRhIH0pXG4gICAgY29uc3QgcmVzdWx0ID0geyB0eXBlLCBpZCB9XG4gICAgaWYgKGlzT2JqZWN0KG1ldGEpKSB7XG4gICAgICByZXN1bHQubWV0YSA9IG1ldGFcbiAgICB9XG4gICAgaWYgKGluY2x1ZGVkID09PSB0cnVlICYmICFpbmNsdWRlLmV4aXN0cyh7IHR5cGUsIGlkIH0pKSB7XG4gICAgICBjb25zdCByZXNvdXJjZSA9IHRyYW5zZm9ybURhdGEoe1xuICAgICAgICBkb2NTY2hlbWE6IHJlbFNjaGVtYSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBkYXRhLFxuICAgICAgICBpbmNsdWRlLFxuICAgICAgICBfdHlwZTogdHlwZSxcbiAgICAgICAgX2lkOiBpZCxcbiAgICAgIH0pXG4gICAgICBpbmNsdWRlLmluY2x1ZGUocmVzb3VyY2UpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc291cmNlIGxpbmtzIGZvciB0aGUgY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVNjaGVtYVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5pZFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuYXR0cmlidXRlc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MucmVsYXRpb25zaGlwc1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IGxpbmtzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRMaW5rcyhhcmdzKSB7XG4gICAgY29uc3QgeyBkYXRhU2NoZW1hLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBpZiAoZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS5saW5rcykge1xuICAgICAgcmV0dXJuIGRhdGFTY2hlbWEuc2NoZW1hLmRhdGEubGlua3Mob3RoZXJzKVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZXNvdXJjZSBtZXRhIGZvciB0aGUgY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVNjaGVtYVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5pZFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuYXR0cmlidXRlc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MucmVsYXRpb25zaGlwc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MubGlua3NcbiAgICogQHJldHVybiB7T2JqZWN0fSBtZXRhXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRNZXRhKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRhdGFTY2hlbWEsIC4uLm90aGVycyB9ID0gYXJnc1xuICAgIGlmIChkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLm1ldGEpIHtcbiAgICAgIHJldHVybiBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLm1ldGEob3RoZXJzKVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGluY2x1ZGUgb2JqZWN0XG4gICAqIEByZXR1cm4ge09iamVjdH0gaW5jbHVkZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlSW5jbHVkZSgpIHtcbiAgICBjb25zdCBpbmNsdWRlZCA9IFtdXG4gICAgY29uc3QgYWxyZWFkeUluY2x1ZGVkID0ge31cbiAgICByZXR1cm4ge1xuICAgICAgLyoqXG4gICAgICAgKiBEZXRlcm1pbmUgd2hldGhlciBvciBub3QgYSBnaXZlbiByZXNvdXJjZSBoYXMgYWxyZWFkeSBiZWVuIGluY2x1ZGVkXG4gICAgICAgKiBAcGFyYW0ge09iamVjdH0gYXJnc1xuICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGFyZ3MudHlwZVxuICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGFyZ3MuaWRcbiAgICAgICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAgICAgKi9cbiAgICAgIGV4aXN0cyh7IHR5cGUsIGlkIH0pIHtcbiAgICAgICAgcmV0dXJuIGFscmVhZHlJbmNsdWRlZFtgJHt0eXBlfToke2lkfWBdXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIEFkZCBhbiBpbmNsdWRlZCByZXNvdXJjZSB0byB0aGUgaW5jbHVkZWQgc2VjdGlvbiBvZiB0aGUgZG9jdW1lbnRcbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSByZXNvdXJjZVxuICAgICAgICogQHJldHVybiB7VW5kZWZpbmVkfVxuICAgICAgICovXG4gICAgICBpbmNsdWRlKHJlc291cmNlKSB7XG4gICAgICAgIGFscmVhZHlJbmNsdWRlZFtgJHtyZXNvdXJjZS50eXBlfToke3Jlc291cmNlLmlkfWBdID0gdHJ1ZVxuICAgICAgICBpbmNsdWRlZC5wdXNoKHJlc291cmNlKVxuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBSZXR1cm4gdGhlIGluY2x1ZGVkIGFycmF5IGluIGl0cyBjdXJyZW50IHN0YXRlXG4gICAgICAgKiBAcmV0dXJuIHtPYmplY3RbXX1cbiAgICAgICAqL1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gaW5jbHVkZWRcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICByZWdpc3RlcixcbiAgICB0cmFuc2Zvcm0sXG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi90cmFuc2Zvcm1hbGl6ZXIuanMiXSwibmFtZXMiOlsiY3JlYXRlVHJhbnNmb3JtYWxpemVyIiwiYmFzZU9wdGlvbnMiLCJyZWdpc3RyeSIsInJlZ2lzdGVyIiwibmFtZSIsInNjaGVtYSIsInNjaGVtYU9wdGlvbnMiLCJvcHRpb25zIiwiRXJyb3IiLCJ1bmRlZmluZWQiLCJ0cmFuc2Zvcm0iLCJzb3VyY2UiLCJvcHRzIiwiZG9jU2NoZW1hIiwiT2JqZWN0IiwiYXNzaWduIiwiaW5jbHVkZSIsImNyZWF0ZUluY2x1ZGUiLCJkYXRhIiwidHJhbnNmb3JtU291cmNlIiwiaW5jbHVkZWQiLCJnZXQiLCJkb2N1bWVudCIsImpzb25hcGkiLCJ2ZXJzaW9uIiwidG9wTGV2ZWwiLCJmb3JFYWNoIiwicHJvcCIsInJlc3VsdCIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJ0cmFuc2Zvcm1EYXRhIiwiX3R5cGUiLCJfaWQiLCJkYXRhU2NoZW1hIiwicGFyYW1zIiwidHlwZSIsImdldFR5cGUiLCJpZCIsImdldElkIiwiYXR0cmlidXRlcyIsImdldEF0dHJpYnV0ZXMiLCJyZWxhdGlvbnNoaXBzIiwiZ2V0UmVsYXRpb25zaGlwcyIsImxpbmtzIiwiZ2V0TGlua3MiLCJtZXRhIiwiZ2V0TWV0YSIsInJlc291cmNlIiwib3RoZXJzIiwicmVsU2NoZW1hIiwia2V5cyIsInJlZHVjZSIsIm1lbW8iLCJrZXkiLCJmbiIsInJlbGF0aW9uc2hpcCIsImdldFJlbGF0aW9uc2hpcCIsImludmFsaWREYXRhIiwidHJhbnNmb3JtUmVsYXRpb25zaGlwRGF0YSIsIml0ZW0iLCJleGlzdHMiLCJhbHJlYWR5SW5jbHVkZWQiLCJwdXNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O2tCQWV3QkEscUI7O0FBZnhCOzs7O0FBRUE7Ozs7OztBQVFBOzs7OztBQUtlLFNBQVNBLHFCQUFULEdBQWlEO0FBQUEsTUFBbEJDLFdBQWtCLHVFQUFKLEVBQUk7O0FBQzlELE1BQU1DLFdBQVcsRUFBakI7O0FBRUE7Ozs7Ozs7O0FBUUEsV0FBU0MsUUFBVCxPQUE0RDtBQUFBLFFBQXhDQyxJQUF3QyxRQUF4Q0EsSUFBd0M7QUFBQSxRQUFsQ0MsTUFBa0MsUUFBbENBLE1BQWtDO0FBQUEsUUFBakJDLGFBQWlCLFFBQTFCQyxPQUEwQjs7QUFDMUQsUUFBSSxDQUFDLHFCQUFTSCxJQUFULENBQUwsRUFBcUI7QUFDbkIsWUFBTSxJQUFJSSxLQUFKLENBQVUsc0NBQVYsQ0FBTjtBQUNEO0FBQ0ROLGFBQVNFLElBQVQsSUFBaUI7QUFDZkMsY0FBUSwyQkFBZSxFQUFFRCxVQUFGLEVBQVFDLGNBQVIsRUFBZixDQURPO0FBRWZFLGVBQVNEO0FBRk0sS0FBakI7QUFJQSxXQUFPRyxTQUFQO0FBQ0Q7O0FBRUQ7Ozs7Ozs7O0FBUUEsV0FBU0MsU0FBVCxRQUFvRDtBQUFBLFFBQS9CTixJQUErQixTQUEvQkEsSUFBK0I7QUFBQSxRQUF6Qk8sTUFBeUIsU0FBekJBLE1BQXlCO0FBQUEsUUFBUkMsSUFBUSxTQUFqQkwsT0FBaUI7O0FBQ2xELFFBQUksQ0FBQyxxQkFBU0gsSUFBVCxDQUFMLEVBQXFCO0FBQ25CLFlBQU0sMEJBQW1CLHNDQUFuQixFQUEyRCxFQUFFQSxVQUFGLEVBQVFPLGNBQVIsRUFBZ0JKLFNBQVNLLElBQXpCLEVBQTNELENBQU47QUFDRDtBQUNELFFBQU1DLFlBQVlYLFNBQVNFLElBQVQsQ0FBbEI7QUFDQSxRQUFJLENBQUNTLFNBQUwsRUFBZ0I7QUFDZCxZQUFNLCtDQUFzQ1QsSUFBdEMsRUFBOEMsRUFBRUEsVUFBRixFQUFRTyxjQUFSLEVBQWdCSixTQUFTSyxJQUF6QixFQUE5QyxDQUFOO0FBQ0Q7QUFDRCxRQUFNTCxVQUFVLHFCQUFNTyxPQUFPQyxNQUFQLENBQWMsRUFBZCxFQUFrQmQsV0FBbEIsRUFBK0JXLElBQS9CLENBQU4sQ0FBaEI7QUFDQSxRQUFNSSxVQUFVQyxjQUFjLEVBQUVOLGNBQUYsRUFBVUosU0FBU0ssSUFBbkIsRUFBZCxDQUFoQjtBQUNBLFFBQU1NLE9BQU9DLGdCQUFnQixFQUFFTixvQkFBRixFQUFhRixjQUFiLEVBQXFCSixTQUFTSyxJQUE5QixFQUFvQ0ksZ0JBQXBDLEVBQWhCLENBQWI7QUFDQSxRQUFNSSxXQUFXSixRQUFRSyxHQUFSLEVBQWpCO0FBQ0EsUUFBTUMsV0FBVztBQUNmQyxlQUFTO0FBQ1BDLGlCQUFTO0FBREY7QUFETSxLQUFqQjtBQUtBO0FBQ0EsUUFBTUMsV0FBVyxDQUFDLE9BQUQsRUFBVSxNQUFWLENBQWpCO0FBQ0FBLGFBQVNDLE9BQVQsQ0FBaUIsVUFBQ0MsSUFBRCxFQUFVO0FBQ3pCLFVBQUlkLFVBQVVSLE1BQVYsQ0FBaUJzQixJQUFqQixDQUFKLEVBQTRCO0FBQzFCLFlBQU1DLFNBQVNmLFVBQVVSLE1BQVYsQ0FBaUJzQixJQUFqQixFQUF1QixFQUFFaEIsY0FBRixFQUFVSixnQkFBVixFQUFtQlcsVUFBbkIsRUFBeUJFLGtCQUF6QixFQUF2QixDQUFmO0FBQ0EsWUFBSSxxQkFBU1EsTUFBVCxDQUFKLEVBQXNCO0FBQ3BCTixtQkFBU0ssSUFBVCxJQUFpQkMsTUFBakI7QUFDRDtBQUNGO0FBQ0YsS0FQRDtBQVFBTixhQUFTSixJQUFULEdBQWdCQSxJQUFoQjtBQUNBLFFBQUlFLFNBQVNTLE1BQWIsRUFBcUI7QUFDbkJQLGVBQVNGLFFBQVQsR0FBb0JBLFFBQXBCO0FBQ0Q7QUFDRCxXQUFPRSxRQUFQO0FBQ0Q7O0FBRUQ7Ozs7Ozs7OztBQVNBLFdBQVNILGVBQVQsQ0FBeUJXLElBQXpCLEVBQStCO0FBQUEsUUFDckJqQixTQURxQixHQUN5QmlCLElBRHpCLENBQ3JCakIsU0FEcUI7QUFBQSxRQUNWRixNQURVLEdBQ3lCbUIsSUFEekIsQ0FDVm5CLE1BRFU7QUFBQSxRQUNPQyxJQURQLEdBQ3lCa0IsSUFEekIsQ0FDRnZCLE9BREU7QUFBQSxRQUNhUyxPQURiLEdBQ3lCYyxJQUR6QixDQUNhZCxPQURiO0FBRTdCOztBQUNBLFFBQUllLE1BQU1DLE9BQU4sQ0FBY3JCLE1BQWQsQ0FBSixFQUEyQjtBQUN6QixhQUFPQSxPQUFPc0IsR0FBUCxDQUFXO0FBQUEsZUFBUUMsY0FBYyxFQUFFckIsb0JBQUYsRUFBYUYsY0FBYixFQUFxQkosU0FBU0ssSUFBOUIsRUFBb0NNLFVBQXBDLEVBQTBDRixnQkFBMUMsRUFBZCxDQUFSO0FBQUEsT0FBWCxDQUFQO0FBQ0Q7QUFDRCxXQUFPa0IsY0FBYyxFQUFFckIsb0JBQUYsRUFBYUYsY0FBYixFQUFxQkosU0FBU0ssSUFBOUIsRUFBb0NNLE1BQU1QLE1BQTFDLEVBQWtESyxnQkFBbEQsRUFBZCxDQUFQO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7OztBQVlBLFdBQVNrQixhQUFULENBQXVCSixJQUF2QixFQUE2QjtBQUFBLFFBQ25CakIsU0FEbUIsR0FDNkNpQixJQUQ3QyxDQUNuQmpCLFNBRG1CO0FBQUEsUUFDUkYsTUFEUSxHQUM2Q21CLElBRDdDLENBQ1JuQixNQURRO0FBQUEsUUFDU0MsSUFEVCxHQUM2Q2tCLElBRDdDLENBQ0F2QixPQURBO0FBQUEsUUFDZVcsSUFEZixHQUM2Q1ksSUFEN0MsQ0FDZVosSUFEZjtBQUFBLFFBQ3FCRixPQURyQixHQUM2Q2MsSUFEN0MsQ0FDcUJkLE9BRHJCO0FBQUEsUUFDOEJtQixLQUQ5QixHQUM2Q0wsSUFEN0MsQ0FDOEJLLEtBRDlCO0FBQUEsUUFDcUNDLEdBRHJDLEdBQzZDTixJQUQ3QyxDQUNxQ00sR0FEckM7QUFFM0I7O0FBQ0EsUUFBSUMsYUFBYXhCLFNBQWpCO0FBQ0EsUUFBSSx1QkFBV0EsVUFBVVIsTUFBVixDQUFpQmEsSUFBakIsQ0FBc0JtQixVQUFqQyxDQUFKLEVBQWtEO0FBQ2hELFVBQU1qQyxPQUFPUyxVQUFVUixNQUFWLENBQWlCYSxJQUFqQixDQUFzQm1CLFVBQXRCLENBQWlDLEVBQUUxQixjQUFGLEVBQVVPLFVBQVYsRUFBZ0JYLFNBQVNLLElBQXpCLEVBQWpDLENBQWI7QUFDQSxVQUFJUixTQUFTUyxVQUFVVCxJQUF2QixFQUE2QjtBQUMzQmlDLHFCQUFhbkMsU0FBU0UsSUFBVCxDQUFiO0FBQ0EsWUFBSSxDQUFDaUMsVUFBTCxFQUFpQjtBQUNmLGdCQUFNLElBQUk3QixLQUFKLHNCQUE2QkosSUFBN0IsQ0FBTjtBQUNEO0FBQ0Y7QUFDRjtBQUNELFFBQU1HLFVBQVUscUJBQU1PLE9BQU9DLE1BQVAsQ0FBYyxFQUFkLEVBQWtCZCxXQUFsQixFQUErQlcsSUFBL0IsQ0FBTixDQUFoQjtBQUNBLFFBQU0wQixTQUFTLEVBQUVELHNCQUFGLEVBQWMxQixjQUFkLEVBQXNCSixnQkFBdEIsRUFBK0JXLFVBQS9CLEVBQWY7QUFDQSxRQUFNcUIsT0FBT0QsT0FBT0MsSUFBUCxHQUFjSixTQUFTSyxRQUFRRixNQUFSLENBQXBDO0FBQ0EsUUFBTUcsS0FBS0gsT0FBT0csRUFBUCxHQUFZTCxPQUFPTSxNQUFNSixNQUFOLENBQTlCO0FBQ0EsUUFBTUssYUFBYUwsT0FBT0ssVUFBUCxHQUFvQkMsY0FBY04sTUFBZCxDQUF2QztBQUNBLFFBQU1PLGdCQUFnQlAsT0FBT08sYUFBUCxHQUF1QkMsNEJBQW1COUIsZ0JBQW5CLElBQStCc0IsTUFBL0IsRUFBN0M7QUFDQSxRQUFNUyxRQUFRVCxPQUFPUyxLQUFQLEdBQWVDLFNBQVNWLE1BQVQsQ0FBN0I7QUFDQSxRQUFNVyxPQUFPWCxPQUFPVyxJQUFQLEdBQWNDLFFBQVFaLE1BQVIsQ0FBM0I7QUFDQTtBQUNBLFFBQU1hLFdBQVcsRUFBRVosVUFBRixFQUFRRSxNQUFSLEVBQWpCO0FBQ0EsUUFBSSxxQkFBU0UsVUFBVCxDQUFKLEVBQTBCO0FBQ3hCUSxlQUFTUixVQUFULEdBQXNCQSxVQUF0QjtBQUNEO0FBQ0QsUUFBSSxxQkFBU0UsYUFBVCxDQUFKLEVBQTZCO0FBQzNCTSxlQUFTTixhQUFULEdBQXlCQSxhQUF6QjtBQUNEO0FBQ0QsUUFBSSxxQkFBU0ksSUFBVCxDQUFKLEVBQW9CO0FBQ2xCRSxlQUFTRixJQUFULEdBQWdCQSxJQUFoQjtBQUNEO0FBQ0QsUUFBSSxxQkFBU0YsS0FBVCxDQUFKLEVBQXFCO0FBQ25CSSxlQUFTSixLQUFULEdBQWlCQSxLQUFqQjtBQUNEO0FBQ0QsV0FBT0ksUUFBUDtBQUNEOztBQUVEOzs7Ozs7Ozs7O0FBVUEsV0FBU1gsT0FBVCxDQUFpQlYsSUFBakIsRUFBdUI7QUFBQSxRQUNiTyxVQURhLEdBQ2FQLElBRGIsQ0FDYk8sVUFEYTtBQUFBLFFBQ0VlLE1BREYsNEJBQ2F0QixJQURiOztBQUVyQixRQUFNUyxPQUFPRixXQUFXaEMsTUFBWCxDQUFrQmEsSUFBbEIsQ0FBdUJxQixJQUF2QixDQUE0QmEsTUFBNUIsQ0FBYjtBQUNBLFFBQUksQ0FBQyxxQkFBU2IsSUFBVCxDQUFMLEVBQXFCO0FBQ25CLFlBQU0sMEJBQW1CLGNBQW5CLEVBQW1DVCxJQUFuQyxDQUFOO0FBQ0Q7QUFDRCxXQUFPUyxJQUFQO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7O0FBV0EsV0FBU0csS0FBVCxDQUFlWixJQUFmLEVBQXFCO0FBQUEsUUFDWE8sVUFEVyxHQUNlUCxJQURmLENBQ1hPLFVBRFc7QUFBQSxRQUNJZSxNQURKLDRCQUNldEIsSUFEZjs7QUFFbkIsUUFBTVcsS0FBS0osV0FBV2hDLE1BQVgsQ0FBa0JhLElBQWxCLENBQXVCdUIsRUFBdkIsQ0FBMEJXLE1BQTFCLENBQVg7QUFDQSxRQUFJLENBQUMscUJBQVNYLEVBQVQsQ0FBTCxFQUFtQjtBQUNqQixZQUFNLDBCQUFtQixZQUFuQixFQUFpQ1gsSUFBakMsQ0FBTjtBQUNEO0FBQ0QsV0FBT1csRUFBUDtBQUNEOztBQUVEOzs7Ozs7Ozs7Ozs7QUFZQSxXQUFTRyxhQUFULENBQXVCZCxJQUF2QixFQUE2QjtBQUFBLFFBQ25CTyxVQURtQixHQUNPUCxJQURQLENBQ25CTyxVQURtQjtBQUFBLFFBQ0plLE1BREksNEJBQ090QixJQURQOztBQUUzQixRQUFJTyxXQUFXaEMsTUFBWCxDQUFrQmEsSUFBbEIsQ0FBdUJ5QixVQUEzQixFQUF1QztBQUNyQyxVQUFNQSxhQUFhTixXQUFXaEMsTUFBWCxDQUFrQmEsSUFBbEIsQ0FBdUJ5QixVQUF2QixDQUFrQ1MsTUFBbEMsQ0FBbkI7QUFDQSxhQUFPVCxVQUFQO0FBQ0Q7QUFDRCxXQUFPbEMsU0FBUDtBQUNEOztBQUVEOzs7Ozs7Ozs7Ozs7OztBQWNBLFdBQVNxQyxnQkFBVCxDQUEwQmhCLElBQTFCLEVBQWdDO0FBQUEsUUFDdEJPLFVBRHNCLEdBQ0lQLElBREosQ0FDdEJPLFVBRHNCO0FBQUEsUUFDUGUsTUFETyw0QkFDSXRCLElBREo7O0FBRTlCLFFBQU11QixZQUFZaEIsV0FBV2hDLE1BQVgsQ0FBa0JhLElBQWxCLENBQXVCMkIsYUFBekM7QUFDQSxRQUFJUSxTQUFKLEVBQWU7QUFDYixVQUFNQyxPQUFPeEMsT0FBT3dDLElBQVAsQ0FBWUQsU0FBWixDQUFiO0FBQ0EsVUFBTVIsZ0JBQWdCUyxLQUFLQyxNQUFMLENBQVksVUFBQ0MsSUFBRCxFQUFPQyxHQUFQLEVBQWU7QUFDL0MsWUFBTUMsS0FBS0wsVUFBVUksR0FBVixDQUFYO0FBQ0EsWUFBTUUsZUFBZUMsMkJBQWtCRixNQUFsQixJQUF5Qk4sTUFBekIsRUFBckI7QUFDQSxZQUFJLHFCQUFTTyxZQUFULENBQUosRUFBNEI7QUFDMUJILGVBQUtDLEdBQUwsSUFBWUUsWUFBWjtBQUNEO0FBQ0QsZUFBT0gsSUFBUDtBQUNELE9BUHFCLEVBT25CLEVBUG1CLENBQXRCO0FBUUEsVUFBSSxDQUFDMUMsT0FBT3dDLElBQVAsQ0FBWVQsYUFBWixFQUEyQmhCLE1BQWhDLEVBQXdDO0FBQ3RDLGVBQU9wQixTQUFQO0FBQ0Q7QUFDRCxhQUFPb0MsYUFBUDtBQUNEO0FBQ0QsV0FBT3BDLFNBQVA7QUFDRDs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsV0FBU21ELGVBQVQsQ0FBeUI5QixJQUF6QixFQUErQjtBQUFBLFFBQ3JCNEIsRUFEcUIsR0FDTTVCLElBRE4sQ0FDckI0QixFQURxQjtBQUFBLFFBQ2pCMUMsT0FEaUIsR0FDTWMsSUFETixDQUNqQmQsT0FEaUI7QUFBQSxRQUNMb0MsTUFESyw0QkFDTXRCLElBRE47O0FBRTdCLFFBQU1GLFNBQVM4QixHQUFHTixNQUFILENBQWY7QUFDQSxRQUFJLENBQUMscUJBQVN4QixNQUFULENBQUwsRUFBdUI7QUFDckIsYUFBT25CLFNBQVA7QUFDRDtBQUw0QixRQU1yQndDLElBTnFCLEdBTUNyQixNQU5ELENBTXJCcUIsSUFOcUI7QUFBQSxRQU1mRixLQU5lLEdBTUNuQixNQU5ELENBTWZtQixLQU5lO0FBQUEsUUFNUjdCLElBTlEsR0FNQ1UsTUFORCxDQU1SVixJQU5ROztBQU83QixRQUFNMkMsY0FBYyxDQUFDM0MsSUFBRCxJQUFTLFFBQU9BLElBQVAseUNBQU9BLElBQVAsT0FBZ0IsUUFBN0M7QUFDQSxRQUFJLENBQUM2QixLQUFELElBQVUsQ0FBQ0UsSUFBWCxJQUFtQlksV0FBdkIsRUFBb0M7QUFDbEMsYUFBT3BELFNBQVA7QUFDRDtBQUNELFFBQU1rRCxlQUFlLEVBQXJCO0FBQ0EsUUFBSSxDQUFDRSxXQUFMLEVBQWtCO0FBQ2hCLFVBQUk5QixNQUFNQyxPQUFOLENBQWNkLElBQWQsQ0FBSixFQUF5QjtBQUN2QnlDLHFCQUFhekMsSUFBYixHQUFvQkEsS0FBS2UsR0FBTCxDQUFTO0FBQUEsaUJBQVE2QiwwQkFBMEI7QUFDN0RDLHNCQUQ2RDtBQUU3RHBELG9CQUFRbUIsS0FBS25CLE1BRmdEO0FBRzdESixxQkFBU3VCLEtBQUt2QixPQUgrQztBQUk3RFM7QUFKNkQsV0FBMUIsQ0FBUjtBQUFBLFNBQVQsQ0FBcEI7QUFNRCxPQVBELE1BT087QUFDTDJDLHFCQUFhekMsSUFBYixHQUFvQjRDLDBCQUEwQjtBQUM1Q0MsZ0JBQU03QyxJQURzQztBQUU1Q1Asa0JBQVFtQixLQUFLbkIsTUFGK0I7QUFHNUNKLG1CQUFTdUIsS0FBS3ZCLE9BSDhCO0FBSTVDUztBQUo0QyxTQUExQixDQUFwQjtBQU1EO0FBQ0Y7QUFDRCxRQUFJLHFCQUFTaUMsSUFBVCxDQUFKLEVBQW9CO0FBQ2xCVSxtQkFBYVYsSUFBYixHQUFvQkEsSUFBcEI7QUFDRDtBQUNELFFBQUkscUJBQVNGLEtBQVQsQ0FBSixFQUFxQjtBQUNuQlksbUJBQWFaLEtBQWIsR0FBcUJBLEtBQXJCO0FBQ0Q7QUFDRCxXQUFPWSxZQUFQO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7O0FBV0EsV0FBU0cseUJBQVQsQ0FBbUNoQyxJQUFuQyxFQUF5QztBQUFBLFFBQy9CaUMsSUFEK0IsR0FDSWpDLElBREosQ0FDL0JpQyxJQUQrQjtBQUFBLFFBQ3pCcEQsTUFEeUIsR0FDSW1CLElBREosQ0FDekJuQixNQUR5QjtBQUFBLFFBQ2pCSixPQURpQixHQUNJdUIsSUFESixDQUNqQnZCLE9BRGlCO0FBQUEsUUFDUlMsT0FEUSxHQUNJYyxJQURKLENBQ1JkLE9BRFE7QUFBQSxRQUUvQlosSUFGK0IsR0FFQTJELElBRkEsQ0FFL0IzRCxJQUYrQjtBQUFBLFFBRXpCYyxJQUZ5QixHQUVBNkMsSUFGQSxDQUV6QjdDLElBRnlCO0FBQUEsUUFFbkJFLFFBRm1CLEdBRUEyQyxJQUZBLENBRW5CM0MsUUFGbUI7QUFBQSxRQUVUNkIsSUFGUyxHQUVBYyxJQUZBLENBRVRkLElBRlM7O0FBR3ZDLFFBQUksQ0FBQyxxQkFBUzdDLElBQVQsQ0FBRCxJQUFtQixDQUFDRixTQUFTRSxJQUFULENBQXhCLEVBQXdDO0FBQ3RDLFlBQU0sK0NBQXNDQSxJQUF0QyxFQUE4QzBCLElBQTlDLENBQU47QUFDRDtBQUNELFFBQU11QixZQUFZbkQsU0FBU0UsSUFBVCxDQUFsQjtBQUNBLFFBQU1tQyxPQUFPQyxRQUFRLEVBQUVILFlBQVlnQixTQUFkLEVBQXlCMUMsY0FBekIsRUFBaUNKLGdCQUFqQyxFQUEwQ1csVUFBMUMsRUFBUixDQUFiO0FBQ0EsUUFBTXVCLEtBQUtDLE1BQU0sRUFBRUwsWUFBWWdCLFNBQWQsRUFBeUIxQyxjQUF6QixFQUFpQ0osZ0JBQWpDLEVBQTBDVyxVQUExQyxFQUFOLENBQVg7QUFDQSxRQUFNVSxTQUFTLEVBQUVXLFVBQUYsRUFBUUUsTUFBUixFQUFmO0FBQ0EsUUFBSSxxQkFBU1EsSUFBVCxDQUFKLEVBQW9CO0FBQ2xCckIsYUFBT3FCLElBQVAsR0FBY0EsSUFBZDtBQUNEO0FBQ0QsUUFBSTdCLGFBQWEsSUFBYixJQUFxQixDQUFDSixRQUFRZ0QsTUFBUixDQUFlLEVBQUV6QixVQUFGLEVBQVFFLE1BQVIsRUFBZixDQUExQixFQUF3RDtBQUN0RCxVQUFNVSxXQUFXakIsY0FBYztBQUM3QnJCLG1CQUFXd0MsU0FEa0I7QUFFN0IxQyxzQkFGNkI7QUFHN0JKLHdCQUg2QjtBQUk3Qlcsa0JBSjZCO0FBSzdCRix3QkFMNkI7QUFNN0JtQixlQUFPSSxJQU5zQjtBQU83QkgsYUFBS0s7QUFQd0IsT0FBZCxDQUFqQjtBQVNBekIsY0FBUUEsT0FBUixDQUFnQm1DLFFBQWhCO0FBQ0Q7QUFDRCxXQUFPdkIsTUFBUDtBQUNEOztBQUVEOzs7Ozs7Ozs7Ozs7OztBQWNBLFdBQVNvQixRQUFULENBQWtCbEIsSUFBbEIsRUFBd0I7QUFBQSxRQUNkTyxVQURjLEdBQ1lQLElBRFosQ0FDZE8sVUFEYztBQUFBLFFBQ0NlLE1BREQsNEJBQ1l0QixJQURaOztBQUV0QixRQUFJTyxXQUFXaEMsTUFBWCxDQUFrQmEsSUFBbEIsQ0FBdUI2QixLQUEzQixFQUFrQztBQUNoQyxhQUFPVixXQUFXaEMsTUFBWCxDQUFrQmEsSUFBbEIsQ0FBdUI2QixLQUF2QixDQUE2QkssTUFBN0IsQ0FBUDtBQUNEO0FBQ0QsV0FBTzNDLFNBQVA7QUFDRDs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsV0FBU3lDLE9BQVQsQ0FBaUJwQixJQUFqQixFQUF1QjtBQUFBLFFBQ2JPLFVBRGEsR0FDYVAsSUFEYixDQUNiTyxVQURhO0FBQUEsUUFDRWUsTUFERiw0QkFDYXRCLElBRGI7O0FBRXJCLFFBQUlPLFdBQVdoQyxNQUFYLENBQWtCYSxJQUFsQixDQUF1QitCLElBQTNCLEVBQWlDO0FBQy9CLGFBQU9aLFdBQVdoQyxNQUFYLENBQWtCYSxJQUFsQixDQUF1QitCLElBQXZCLENBQTRCRyxNQUE1QixDQUFQO0FBQ0Q7QUFDRCxXQUFPM0MsU0FBUDtBQUNEOztBQUVEOzs7OztBQUtBLFdBQVNRLGFBQVQsR0FBeUI7QUFDdkIsUUFBTUcsV0FBVyxFQUFqQjtBQUNBLFFBQU02QyxrQkFBa0IsRUFBeEI7QUFDQSxXQUFPO0FBQ0w7Ozs7Ozs7QUFPQUQsWUFSSyx5QkFRZ0I7QUFBQSxZQUFaekIsSUFBWSxTQUFaQSxJQUFZO0FBQUEsWUFBTkUsRUFBTSxTQUFOQSxFQUFNOztBQUNuQixlQUFPd0IsZ0JBQW1CMUIsSUFBbkIsU0FBMkJFLEVBQTNCLENBQVA7QUFDRCxPQVZJOzs7QUFZTDs7Ozs7QUFLQXpCLGFBakJLLG1CQWlCR21DLFFBakJILEVBaUJhO0FBQ2hCYyx3QkFBbUJkLFNBQVNaLElBQTVCLFNBQW9DWSxTQUFTVixFQUE3QyxJQUFxRCxJQUFyRDtBQUNBckIsaUJBQVM4QyxJQUFULENBQWNmLFFBQWQ7QUFDRCxPQXBCSTs7O0FBc0JMOzs7O0FBSUE5QixTQTFCSyxpQkEwQkM7QUFDSixlQUFPRCxRQUFQO0FBQ0Q7QUE1QkksS0FBUDtBQThCRDs7QUFFRCxTQUFPO0FBQ0xqQixzQkFESztBQUVMTztBQUZLLEdBQVA7QUFJRCIsImZpbGUiOiJ0cmFuc2Zvcm1hbGl6ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2xvbmUgZnJvbSAnY2xvbmUnXG5cbmltcG9ydCB7XG4gIGlzRnVuY3Rpb24sXG4gIGlzT2JqZWN0LFxuICBpc1N0cmluZyxcbiAgVHJhbnNmb3JtRXJyb3IsXG4gIHZhbGlkYXRlU2NoZW1hLFxufSBmcm9tICcuL3V0aWxzJ1xuXG4vKipcbiAqIFRyYW5zZm9ybWFsaXplciBmYWN0b3J5IGZ1bmN0aW9uLlxuICogQHBhcmFtICB7T2JqZWN0fSBbYmFzZU9wdGlvbnM9e31dXG4gKiBAcmV0dXJuIHtPYmplY3R9IHRyYW5zZm9ybWFsaXplclxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVUcmFuc2Zvcm1hbGl6ZXIoYmFzZU9wdGlvbnMgPSB7fSkge1xuICBjb25zdCByZWdpc3RyeSA9IHt9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgc2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MubmFtZSAtIHNjaGVtYSBuYW1lL2lkXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5zY2hlbWEgLSBzY2hlbWEgZGVmaW5pdGlvblxuICAgKiBAcGFyYW0gIHtPYmplY3R9IFthcmdzLm9wdGlvbnM9e31dIC0gc2NoZW1hIG9wdGlvbnMgdG8gYmUgbWVyZ2VkIGluIHRvIHRyYW5zZm9ybSBvcHRpb25zXG4gICAqIEByZXR1cm4ge1VuZGVmaW5lZH1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZ2lzdGVyKHsgbmFtZSwgc2NoZW1hLCBvcHRpb25zOiBzY2hlbWFPcHRpb25zIH0pIHtcbiAgICBpZiAoIWlzU3RyaW5nKG5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgXCJuYW1lXCIgUHJvcGVydHkgKG5vbiBzdHJpbmcpJylcbiAgICB9XG4gICAgcmVnaXN0cnlbbmFtZV0gPSB7XG4gICAgICBzY2hlbWE6IHZhbGlkYXRlU2NoZW1hKHsgbmFtZSwgc2NoZW1hIH0pLFxuICAgICAgb3B0aW9uczogc2NoZW1hT3B0aW9ucyxcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSByYXcgZGF0YSBpbnRvIGEgdmFsaWQgSlNPTiBBUEkgZG9jdW1lbnRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5uYW1lIC0gdGhlIHRvcCBsZXZlbCBzY2hlbWEgbmFtZVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlIC0gYSBzaW5nbGUgc291cmNlIG9iamVjdCBvciBhbiBhcmF5IG9mIHNvdXJjZSBvYmplY3RzXG4gICAqIEBwYXJhbSAge09iamVjdH0gW29wdGlvbnM9e31dIC0gZnVuY3Rpb24gbGV2ZWwgb3B0aW9uc1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IGRvY3VtZW50XG4gICAqL1xuICBmdW5jdGlvbiB0cmFuc2Zvcm0oeyBuYW1lLCBzb3VyY2UsIG9wdGlvbnM6IG9wdHMgfSkge1xuICAgIGlmICghaXNTdHJpbmcobmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FcnJvcignSW52YWxpZCBcIm5hbWVcIiBQcm9wZXJ0eSAobm9uIHN0cmluZyknLCB7IG5hbWUsIHNvdXJjZSwgb3B0aW9uczogb3B0cyB9KVxuICAgIH1cbiAgICBjb25zdCBkb2NTY2hlbWEgPSByZWdpc3RyeVtuYW1lXVxuICAgIGlmICghZG9jU2NoZW1hKSB7XG4gICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtRXJyb3IoYE1pc3NpbmcgU2NoZW1hOiAke25hbWV9YCwgeyBuYW1lLCBzb3VyY2UsIG9wdGlvbnM6IG9wdHMgfSlcbiAgICB9XG4gICAgY29uc3Qgb3B0aW9ucyA9IGNsb25lKE9iamVjdC5hc3NpZ24oe30sIGJhc2VPcHRpb25zLCBvcHRzKSlcbiAgICBjb25zdCBpbmNsdWRlID0gY3JlYXRlSW5jbHVkZSh7IHNvdXJjZSwgb3B0aW9uczogb3B0cyB9KVxuICAgIGNvbnN0IGRhdGEgPSB0cmFuc2Zvcm1Tb3VyY2UoeyBkb2NTY2hlbWEsIHNvdXJjZSwgb3B0aW9uczogb3B0cywgaW5jbHVkZSB9KVxuICAgIGNvbnN0IGluY2x1ZGVkID0gaW5jbHVkZS5nZXQoKVxuICAgIGNvbnN0IGRvY3VtZW50ID0ge1xuICAgICAganNvbmFwaToge1xuICAgICAgICB2ZXJzaW9uOiAnMS4wJyxcbiAgICAgIH0sXG4gICAgfVxuICAgIC8vIGFkZCB0b3AgbGV2ZWwgcHJvcGVydGllcyBpZiBhdmFpbGFibGVcbiAgICBjb25zdCB0b3BMZXZlbCA9IFsnbGlua3MnLCAnbWV0YSddXG4gICAgdG9wTGV2ZWwuZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgICAgaWYgKGRvY1NjaGVtYS5zY2hlbWFbcHJvcF0pIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZG9jU2NoZW1hLnNjaGVtYVtwcm9wXSh7IHNvdXJjZSwgb3B0aW9ucywgZGF0YSwgaW5jbHVkZWQgfSlcbiAgICAgICAgaWYgKGlzT2JqZWN0KHJlc3VsdCkpIHtcbiAgICAgICAgICBkb2N1bWVudFtwcm9wXSA9IHJlc3VsdFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgICBkb2N1bWVudC5kYXRhID0gZGF0YVxuICAgIGlmIChpbmNsdWRlZC5sZW5ndGgpIHtcbiAgICAgIGRvY3VtZW50LmluY2x1ZGVkID0gaW5jbHVkZWRcbiAgICB9XG4gICAgcmV0dXJuIGRvY3VtZW50XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIHNvdXJjZSBpbnRvIHRoZSBcInByaW1hcnkgZGF0YVwiIG9mIHRoZSBkb2N1bWVudFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRvY1NjaGVtYSAtIHRoZSB0b3AgbGV2ZWwgc2NoZW1hIHVzZWQgZm9yIHRyYW5zZm9ybWluZyB0aGUgZG9jdW1lbnRcbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZSAtIHNvdXJjZSBkYXRhXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zIC0gZnVuY3Rpb24gbGV2ZWwgb3B0aW9uc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuaW5jbHVkZSAtIGluY2x1ZGUgb2JqZWN0XG4gICAqIEByZXR1cm4ge09iamVjdHxPYmplY3RbXX1cbiAgICovXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybVNvdXJjZShhcmdzKSB7XG4gICAgY29uc3QgeyBkb2NTY2hlbWEsIHNvdXJjZSwgb3B0aW9uczogb3B0cywgaW5jbHVkZSB9ID0gYXJnc1xuICAgIC8vIFRPRE8gZGVmaW5lIGluY2x1ZGVcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gc291cmNlLm1hcChkYXRhID0+IHRyYW5zZm9ybURhdGEoeyBkb2NTY2hlbWEsIHNvdXJjZSwgb3B0aW9uczogb3B0cywgZGF0YSwgaW5jbHVkZSB9KSlcbiAgICB9XG4gICAgcmV0dXJuIHRyYW5zZm9ybURhdGEoeyBkb2NTY2hlbWEsIHNvdXJjZSwgb3B0aW9uczogb3B0cywgZGF0YTogc291cmNlLCBpbmNsdWRlIH0pXG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIGEgc2luZ2xlIHNvdXJjZSBvYmplY3QgaW50byBhIHZhbGlkIHJlc291cmNlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZG9jU2NoZW1hIC0gdGhlIHRvcCBsZXZlbCBzY2hlbWEgdXNlZCBmb3IgdHJhbnNmb3JtaW5nIHRoZSBkb2N1bWVudFxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlIC0gc291cmNlIGRhdGFcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnMgLSBmdW5jdGlvbiBsZXZlbCBvcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhIC0gY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5pbmNsdWRlIC0gaW5jbHVkZSBvYmplY3RcbiAgICogQHBhcmFtICB7U3RyaW5nfSBbYXJncy5fdHlwZV0gLSAoZm9yIHVzZSBieSB0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhKVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IFthcmdzLl9pZF0gLSAoZm9yIHVzZSBieSB0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhKVxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRhKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRvY1NjaGVtYSwgc291cmNlLCBvcHRpb25zOiBvcHRzLCBkYXRhLCBpbmNsdWRlLCBfdHlwZSwgX2lkIH0gPSBhcmdzXG4gICAgLy8gY2FsbCBkYXRhU2NoZW1hIGlmIGRlZmluZWQgYW5kIHN3aXRjaCBjb250ZXh0cyBpZiBuZWNlc3NhcnlcbiAgICBsZXQgZGF0YVNjaGVtYSA9IGRvY1NjaGVtYVxuICAgIGlmIChpc0Z1bmN0aW9uKGRvY1NjaGVtYS5zY2hlbWEuZGF0YS5kYXRhU2NoZW1hKSkge1xuICAgICAgY29uc3QgbmFtZSA9IGRvY1NjaGVtYS5zY2hlbWEuZGF0YS5kYXRhU2NoZW1hKHsgc291cmNlLCBkYXRhLCBvcHRpb25zOiBvcHRzIH0pXG4gICAgICBpZiAobmFtZSAhPT0gZG9jU2NoZW1hLm5hbWUpIHtcbiAgICAgICAgZGF0YVNjaGVtYSA9IHJlZ2lzdHJ5W25hbWVdXG4gICAgICAgIGlmICghZGF0YVNjaGVtYSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBTY2hlbWE6ICR7bmFtZX1gKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbnMgPSBjbG9uZShPYmplY3QuYXNzaWduKHt9LCBiYXNlT3B0aW9ucywgb3B0cykpXG4gICAgY29uc3QgcGFyYW1zID0geyBkYXRhU2NoZW1hLCBzb3VyY2UsIG9wdGlvbnMsIGRhdGEgfVxuICAgIGNvbnN0IHR5cGUgPSBwYXJhbXMudHlwZSA9IF90eXBlIHx8IGdldFR5cGUocGFyYW1zKVxuICAgIGNvbnN0IGlkID0gcGFyYW1zLmlkID0gX2lkIHx8IGdldElkKHBhcmFtcylcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gcGFyYW1zLmF0dHJpYnV0ZXMgPSBnZXRBdHRyaWJ1dGVzKHBhcmFtcylcbiAgICBjb25zdCByZWxhdGlvbnNoaXBzID0gcGFyYW1zLnJlbGF0aW9uc2hpcHMgPSBnZXRSZWxhdGlvbnNoaXBzKHsgaW5jbHVkZSwgLi4ucGFyYW1zIH0pXG4gICAgY29uc3QgbGlua3MgPSBwYXJhbXMubGlua3MgPSBnZXRMaW5rcyhwYXJhbXMpXG4gICAgY29uc3QgbWV0YSA9IHBhcmFtcy5tZXRhID0gZ2V0TWV0YShwYXJhbXMpXG4gICAgLy8gYnVpbGQgcmVzdWx0aW5nIHJlc291cmNlXG4gICAgY29uc3QgcmVzb3VyY2UgPSB7IHR5cGUsIGlkIH1cbiAgICBpZiAoaXNPYmplY3QoYXR0cmlidXRlcykpIHtcbiAgICAgIHJlc291cmNlLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzXG4gICAgfVxuICAgIGlmIChpc09iamVjdChyZWxhdGlvbnNoaXBzKSkge1xuICAgICAgcmVzb3VyY2UucmVsYXRpb25zaGlwcyA9IHJlbGF0aW9uc2hpcHNcbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0KG1ldGEpKSB7XG4gICAgICByZXNvdXJjZS5tZXRhID0gbWV0YVxuICAgIH1cbiAgICBpZiAoaXNPYmplY3QobGlua3MpKSB7XG4gICAgICByZXNvdXJjZS5saW5rcyA9IGxpbmtzXG4gICAgfVxuICAgIHJldHVybiByZXNvdXJjZVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgdHlwZSBmb3IgdGhlIGN1cnJlbnQgc291cmNlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFTY2hlbWFcbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9uc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IHR5cGVcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGdldFR5cGUoYXJncykge1xuICAgIGNvbnN0IHsgZGF0YVNjaGVtYSwgLi4ub3RoZXJzIH0gPSBhcmdzXG4gICAgY29uc3QgdHlwZSA9IGRhdGFTY2hlbWEuc2NoZW1hLmRhdGEudHlwZShvdGhlcnMpXG4gICAgaWYgKCFpc1N0cmluZyh0eXBlKSkge1xuICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybUVycm9yKCdJbnZhbGlkIHR5cGUnLCBhcmdzKVxuICAgIH1cbiAgICByZXR1cm4gdHlwZVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgaWQgZm9yIHRoZSBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhU2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHJldHVybiB7U3RyaW5nfSBpZFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0SWQoYXJncykge1xuICAgIGNvbnN0IHsgZGF0YVNjaGVtYSwgLi4ub3RoZXJzIH0gPSBhcmdzXG4gICAgY29uc3QgaWQgPSBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLmlkKG90aGVycylcbiAgICBpZiAoIWlzU3RyaW5nKGlkKSkge1xuICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybUVycm9yKCdJbnZhbGlkIGlkJywgYXJncylcbiAgICB9XG4gICAgcmV0dXJuIGlkXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZXNvdXJjZSBhdHRyaWJ1dGVzIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgc291cmNlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFTY2hlbWFcbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9uc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MudHlwZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MuaWRcbiAgICogQHJldHVybiB7T2JqZWN0fSBhdHRyaWJ1dGVzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRBdHRyaWJ1dGVzKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRhdGFTY2hlbWEsIC4uLm90aGVycyB9ID0gYXJnc1xuICAgIGlmIChkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLmF0dHJpYnV0ZXMob3RoZXJzKVxuICAgICAgcmV0dXJuIGF0dHJpYnV0ZXNcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgcmVsYXRpb25zaGlwcyBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhU2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLmlkXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5hdHRyaWJ1dGVzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5pbmNsdWRlXG4gICAqIEByZXR1cm4ge09iamVjdH0gcmVsYXRpb25zaGlwc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0UmVsYXRpb25zaGlwcyhhcmdzKSB7XG4gICAgY29uc3QgeyBkYXRhU2NoZW1hLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBjb25zdCByZWxTY2hlbWEgPSBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLnJlbGF0aW9uc2hpcHNcbiAgICBpZiAocmVsU2NoZW1hKSB7XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocmVsU2NoZW1hKVxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IGtleXMucmVkdWNlKChtZW1vLCBrZXkpID0+IHtcbiAgICAgICAgY29uc3QgZm4gPSByZWxTY2hlbWFba2V5XVxuICAgICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSBnZXRSZWxhdGlvbnNoaXAoeyBmbiwgLi4ub3RoZXJzIH0pXG4gICAgICAgIGlmIChpc09iamVjdChyZWxhdGlvbnNoaXApKSB7XG4gICAgICAgICAgbWVtb1trZXldID0gcmVsYXRpb25zaGlwXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lbW9cbiAgICAgIH0sIHt9KVxuICAgICAgaWYgKCFPYmplY3Qua2V5cyhyZWxhdGlvbnNoaXBzKS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlbGF0aW9uc2hpcHNcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgcmVsYXRpb25zaGlwIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgcmVsYXRpb25zaGlwIG9mIHRoZVxuICAgKiBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5mblxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5pZFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuYXR0cmlidXRlc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuaW5jbHVkZVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IHJlbGF0aW9uc2hpcFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0UmVsYXRpb25zaGlwKGFyZ3MpIHtcbiAgICBjb25zdCB7IGZuLCBpbmNsdWRlLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBjb25zdCByZXN1bHQgPSBmbihvdGhlcnMpXG4gICAgaWYgKCFpc09iamVjdChyZXN1bHQpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGNvbnN0IHsgbWV0YSwgbGlua3MsIGRhdGEgfSA9IHJlc3VsdFxuICAgIGNvbnN0IGludmFsaWREYXRhID0gIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnXG4gICAgaWYgKCFsaW5rcyAmJiAhbWV0YSAmJiBpbnZhbGlkRGF0YSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgICBjb25zdCByZWxhdGlvbnNoaXAgPSB7fVxuICAgIGlmICghaW52YWxpZERhdGEpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgIHJlbGF0aW9uc2hpcC5kYXRhID0gZGF0YS5tYXAoaXRlbSA9PiB0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhKHtcbiAgICAgICAgICBpdGVtLFxuICAgICAgICAgIHNvdXJjZTogYXJncy5zb3VyY2UsXG4gICAgICAgICAgb3B0aW9uczogYXJncy5vcHRpb25zLFxuICAgICAgICAgIGluY2x1ZGUsXG4gICAgICAgIH0pKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVsYXRpb25zaGlwLmRhdGEgPSB0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhKHtcbiAgICAgICAgICBpdGVtOiBkYXRhLFxuICAgICAgICAgIHNvdXJjZTogYXJncy5zb3VyY2UsXG4gICAgICAgICAgb3B0aW9uczogYXJncy5vcHRpb25zLFxuICAgICAgICAgIGluY2x1ZGUsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc09iamVjdChtZXRhKSkge1xuICAgICAgcmVsYXRpb25zaGlwLm1ldGEgPSBtZXRhXG4gICAgfVxuICAgIGlmIChpc09iamVjdChsaW5rcykpIHtcbiAgICAgIHJlbGF0aW9uc2hpcC5saW5rcyA9IGxpbmtzXG4gICAgfVxuICAgIHJldHVybiByZWxhdGlvbnNoaXBcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRhdGEgZm9yIHRoZSBjdXJyZW50IHJlbGF0aW9uc2hpcCBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHNvdXJjZVxuICAgKiBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5pdGVtIC0gdGhlIGN1cnJlbnQgZGF0YSBpdGVtXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7RnVuY3Rpb259IGFyZ3MuaW5jbHVkZVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IGRhdGFcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybVJlbGF0aW9uc2hpcERhdGEoYXJncykge1xuICAgIGNvbnN0IHsgaXRlbSwgc291cmNlLCBvcHRpb25zLCBpbmNsdWRlIH0gPSBhcmdzXG4gICAgY29uc3QgeyBuYW1lLCBkYXRhLCBpbmNsdWRlZCwgbWV0YSB9ID0gaXRlbVxuICAgIGlmICghaXNTdHJpbmcobmFtZSkgfHwgIXJlZ2lzdHJ5W25hbWVdKSB7XG4gICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtRXJyb3IoYE1pc3NpbmcgU2NoZW1hOiAke25hbWV9YCwgYXJncylcbiAgICB9XG4gICAgY29uc3QgcmVsU2NoZW1hID0gcmVnaXN0cnlbbmFtZV1cbiAgICBjb25zdCB0eXBlID0gZ2V0VHlwZSh7IGRhdGFTY2hlbWE6IHJlbFNjaGVtYSwgc291cmNlLCBvcHRpb25zLCBkYXRhIH0pXG4gICAgY29uc3QgaWQgPSBnZXRJZCh7IGRhdGFTY2hlbWE6IHJlbFNjaGVtYSwgc291cmNlLCBvcHRpb25zLCBkYXRhIH0pXG4gICAgY29uc3QgcmVzdWx0ID0geyB0eXBlLCBpZCB9XG4gICAgaWYgKGlzT2JqZWN0KG1ldGEpKSB7XG4gICAgICByZXN1bHQubWV0YSA9IG1ldGFcbiAgICB9XG4gICAgaWYgKGluY2x1ZGVkID09PSB0cnVlICYmICFpbmNsdWRlLmV4aXN0cyh7IHR5cGUsIGlkIH0pKSB7XG4gICAgICBjb25zdCByZXNvdXJjZSA9IHRyYW5zZm9ybURhdGEoe1xuICAgICAgICBkb2NTY2hlbWE6IHJlbFNjaGVtYSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBkYXRhLFxuICAgICAgICBpbmNsdWRlLFxuICAgICAgICBfdHlwZTogdHlwZSxcbiAgICAgICAgX2lkOiBpZCxcbiAgICAgIH0pXG4gICAgICBpbmNsdWRlLmluY2x1ZGUocmVzb3VyY2UpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc291cmNlIGxpbmtzIGZvciB0aGUgY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVNjaGVtYVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5pZFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuYXR0cmlidXRlc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MucmVsYXRpb25zaGlwc1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IGxpbmtzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRMaW5rcyhhcmdzKSB7XG4gICAgY29uc3QgeyBkYXRhU2NoZW1hLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBpZiAoZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS5saW5rcykge1xuICAgICAgcmV0dXJuIGRhdGFTY2hlbWEuc2NoZW1hLmRhdGEubGlua3Mob3RoZXJzKVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZXNvdXJjZSBtZXRhIGZvciB0aGUgY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVNjaGVtYVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5pZFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuYXR0cmlidXRlc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MucmVsYXRpb25zaGlwc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MubGlua3NcbiAgICogQHJldHVybiB7T2JqZWN0fSBtZXRhXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRNZXRhKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRhdGFTY2hlbWEsIC4uLm90aGVycyB9ID0gYXJnc1xuICAgIGlmIChkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLm1ldGEpIHtcbiAgICAgIHJldHVybiBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLm1ldGEob3RoZXJzKVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGluY2x1ZGUgb2JqZWN0XG4gICAqIEByZXR1cm4ge09iamVjdH0gaW5jbHVkZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlSW5jbHVkZSgpIHtcbiAgICBjb25zdCBpbmNsdWRlZCA9IFtdXG4gICAgY29uc3QgYWxyZWFkeUluY2x1ZGVkID0ge31cbiAgICByZXR1cm4ge1xuICAgICAgLyoqXG4gICAgICAgKiBEZXRlcm1pbmUgd2hldGhlciBvciBub3QgYSBnaXZlbiByZXNvdXJjZSBoYXMgYWxyZWFkeSBiZWVuIGluY2x1ZGVkXG4gICAgICAgKiBAcGFyYW0ge09iamVjdH0gYXJnc1xuICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGFyZ3MudHlwZVxuICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGFyZ3MuaWRcbiAgICAgICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAgICAgKi9cbiAgICAgIGV4aXN0cyh7IHR5cGUsIGlkIH0pIHtcbiAgICAgICAgcmV0dXJuIGFscmVhZHlJbmNsdWRlZFtgJHt0eXBlfToke2lkfWBdXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIEFkZCBhbiBpbmNsdWRlZCByZXNvdXJjZSB0byB0aGUgaW5jbHVkZWQgc2VjdGlvbiBvZiB0aGUgZG9jdW1lbnRcbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSByZXNvdXJjZVxuICAgICAgICogQHJldHVybiB7VW5kZWZpbmVkfVxuICAgICAgICovXG4gICAgICBpbmNsdWRlKHJlc291cmNlKSB7XG4gICAgICAgIGFscmVhZHlJbmNsdWRlZFtgJHtyZXNvdXJjZS50eXBlfToke3Jlc291cmNlLmlkfWBdID0gdHJ1ZVxuICAgICAgICBpbmNsdWRlZC5wdXNoKHJlc291cmNlKVxuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBSZXR1cm4gdGhlIGluY2x1ZGVkIGFycmF5IGluIGl0cyBjdXJyZW50IHN0YXRlXG4gICAgICAgKiBAcmV0dXJuIHtPYmplY3RbXX1cbiAgICAgICAqL1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gaW5jbHVkZWRcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICByZWdpc3RlcixcbiAgICB0cmFuc2Zvcm0sXG4gIH1cbn1cbiJdfQ==
{
"name": "transformalizer",
"version": "0.1.1",
"version": "0.1.2",
"description": "a bare bones node module for building JSON API v1.0 compliant payloads",

@@ -5,0 +5,0 @@ "main": "./dist/transformalizer.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc