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

react-menu-list

Package Overview
Dependencies
Maintainers
1
Versions
50
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-menu-list - npm Package Compare versions

Comparing version 5.0.0 to 5.0.1

4

CHANGELOG.md

@@ -0,1 +1,5 @@

## 5.0.1 (2018-05-15)
* Fix compatibility with Flow v0.72.
## 5.0.0 (2017-10-11)

@@ -2,0 +6,0 @@

2

js/Dropdown.js

@@ -68,2 +68,2 @@ 'use strict';

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9Ecm9wZG93bi5qcyJdLCJuYW1lcyI6WyJEcm9wZG93biIsImJhY2tncm91bmQiLCJib3JkZXIiLCJib3hTaGFkb3ciLCJwYWRkaW5nIiwicHJvcHMiLCJjaGlsZHJlbiIsIkNvbXBvbmVudCIsInByb3BUeXBlcyIsIm5vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7Ozs7QUFFQTs7Ozs7O0lBTXFCQSxROzs7Ozs7Ozs7OzZCQUtWO0FBQ1AsYUFDRTtBQUFBO0FBQUEsVUFBSyxPQUFPO0FBQ1ZDLHdCQUFZLE9BREY7QUFFVkMsb0JBQVEsMEJBRkU7QUFHVkMsdUJBQVcsMkJBSEQ7QUFJVkMscUJBQVM7QUFKQyxXQUFaO0FBTUcsYUFBS0MsS0FBTCxDQUFXQztBQU5kLE9BREY7QUFVRDs7O0VBaEJtQyxnQkFBTUMsUzs7QUFBdkJQLFEsQ0FDWlEsUyxHQUFZO0FBQ2pCRixZQUFVLG9CQUFVRztBQURILEM7a0JBREFULFEiLCJmaWxlIjoiRHJvcGRvd24uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBAZmxvdyAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge05vZGUgYXMgUmVhY3ROb2RlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuXG50eXBlIFByb3BzID0ge1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERyb3Bkb3duIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFByb3BzPiB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlXG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgIGJhY2tncm91bmQ6ICd3aGl0ZScsXG4gICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCByZ2JhKDAsMCwwLC4yKScsXG4gICAgICAgIGJveFNoYWRvdzogJzAgMnB4IDRweCByZ2JhKDAsMCwwLDAuMiknLFxuICAgICAgICBwYWRkaW5nOiAnNnB4IDAnXG4gICAgICB9fT5cbiAgICAgICAge3RoaXMucHJvcHMuY2hpbGRyZW59XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9Ecm9wZG93bi5qcyJdLCJuYW1lcyI6WyJEcm9wZG93biIsImJhY2tncm91bmQiLCJib3JkZXIiLCJib3hTaGFkb3ciLCJwYWRkaW5nIiwicHJvcHMiLCJjaGlsZHJlbiIsIlJlYWN0IiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwibm9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7OztBQUVBOzs7Ozs7SUFNcUJBLFE7Ozs7Ozs7Ozs7NkJBS1Y7QUFDUCxhQUNFO0FBQUE7QUFBQSxVQUFLLE9BQU87QUFDVkMsd0JBQVksT0FERjtBQUVWQyxvQkFBUSwwQkFGRTtBQUdWQyx1QkFBVywyQkFIRDtBQUlWQyxxQkFBUztBQUpDLFdBQVo7QUFNRyxhQUFLQyxLQUFMLENBQVdDO0FBTmQsT0FERjtBQVVEOzs7RUFoQm1DQyxnQkFBTUMsUzs7QUFBdkJSLFEsQ0FDWlMsUyxHQUFZO0FBQ2pCSCxZQUFVSSxvQkFBVUM7QUFESCxDO2tCQURBWCxRIiwiZmlsZSI6IkRyb3Bkb3duLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogQGZsb3cgKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtOb2RlIGFzIFJlYWN0Tm9kZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcblxudHlwZSBQcm9wcyA9IHtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcm9wZG93biBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxQcm9wcz4ge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZVxuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICBiYWNrZ3JvdW5kOiAnd2hpdGUnLFxuICAgICAgICBib3JkZXI6ICcxcHggc29saWQgcmdiYSgwLDAsMCwuMiknLFxuICAgICAgICBib3hTaGFkb3c6ICcwIDJweCA0cHggcmdiYSgwLDAsMCwwLjIpJyxcbiAgICAgICAgcGFkZGluZzogJzZweCAwJ1xuICAgICAgfX0+XG4gICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuIl19

@@ -46,2 +46,2 @@ 'use strict';

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ldmVudHMvQ2hvc2VuRXZlbnQuanMiXSwibmFtZXMiOlsiQ2hvc2VuRXZlbnQiLCJ0eXBlIiwiYnlLZXlib2FyZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOzs7Ozs7SUFFcUJBLFc7OztBQUduQix1QkFBWUMsSUFBWixFQUEwQkMsVUFBMUIsRUFBK0M7QUFBQTs7QUFBQSxnSkFDdkNELElBRHVDOztBQUU3QyxVQUFLQyxVQUFMLEdBQWtCQSxVQUFsQjtBQUY2QztBQUc5Qzs7Ozs7a0JBTmtCRixXIiwiZmlsZSI6IkNob3NlbkV2ZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogQGZsb3cgKi9cblxuaW1wb3J0IE1lbnVFdmVudCBmcm9tICcuL01lbnVFdmVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENob3NlbkV2ZW50IGV4dGVuZHMgTWVudUV2ZW50IHtcbiAgYnlLZXlib2FyZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih0eXBlOiBzdHJpbmcsIGJ5S2V5Ym9hcmQ6IGJvb2xlYW4pIHtcbiAgICBzdXBlcih0eXBlKTtcbiAgICB0aGlzLmJ5S2V5Ym9hcmQgPSBieUtleWJvYXJkO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ldmVudHMvQ2hvc2VuRXZlbnQuanMiXSwibmFtZXMiOlsiQ2hvc2VuRXZlbnQiLCJ0eXBlIiwiYnlLZXlib2FyZCIsIk1lbnVFdmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOzs7Ozs7SUFFcUJBLFc7OztBQUduQix1QkFBWUMsSUFBWixFQUEwQkMsVUFBMUIsRUFBK0M7QUFBQTs7QUFBQSxnSkFDdkNELElBRHVDOztBQUU3QyxVQUFLQyxVQUFMLEdBQWtCQSxVQUFsQjtBQUY2QztBQUc5Qzs7O0VBTnNDQyxtQjs7a0JBQXBCSCxXIiwiZmlsZSI6IkNob3NlbkV2ZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogQGZsb3cgKi9cblxuaW1wb3J0IE1lbnVFdmVudCBmcm9tICcuL01lbnVFdmVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENob3NlbkV2ZW50IGV4dGVuZHMgTWVudUV2ZW50IHtcbiAgYnlLZXlib2FyZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih0eXBlOiBzdHJpbmcsIGJ5S2V5Ym9hcmQ6IGJvb2xlYW4pIHtcbiAgICBzdXBlcih0eXBlKTtcbiAgICB0aGlzLmJ5S2V5Ym9hcmQgPSBieUtleWJvYXJkO1xuICB9XG59XG4iXX0=

@@ -24,2 +24,2 @@ 'use strict';

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZnJvbUV2ZW50c0NhcHR1cmUuanMiXSwibmFtZXMiOlsiZnJvbUV2ZW50c0NhcHR1cmUiLCJ0YXJnZXQiLCJldmVudE5hbWUiLCJzdHJlYW0iLCJhZGRFdmVudExpc3RlbmVyIiwiZW1pdHRlciIsImVtaXQiLCJyZW1vdmVFdmVudExpc3RlbmVyIl0sIm1hcHBpbmdzIjoiOzs7OztrQkFJd0JBLGlCOztBQUZ4Qjs7Ozs7O0FBRWUsU0FBU0EsaUJBQVQsQ0FBMkJDLE1BQTNCLEVBQWdEQyxTQUFoRCxFQUE2RjtBQUMxRyxTQUFPLGdCQUFNQyxNQUFOLENBQWEsbUJBQVc7QUFDN0JGLFdBQU9HLGdCQUFQLENBQXdCRixTQUF4QixFQUFtQ0csUUFBUUMsSUFBM0MsRUFBaUQsSUFBakQ7QUFDQSxXQUFPLFlBQU07QUFDWEwsYUFBT00sbUJBQVAsQ0FBMkJMLFNBQTNCLEVBQXNDRyxRQUFRQyxJQUE5QyxFQUFvRCxJQUFwRDtBQUNELEtBRkQ7QUFHRCxHQUxNLENBQVA7QUFNRCIsImZpbGUiOiJmcm9tRXZlbnRzQ2FwdHVyZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIEBmbG93ICovXG5cbmltcG9ydCBLZWZpciBmcm9tICdrZWZpcic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZyb21FdmVudHNDYXB0dXJlKHRhcmdldDogRXZlbnRUYXJnZXQsIGV2ZW50TmFtZTogc3RyaW5nKTogS2VmaXIuT2JzZXJ2YWJsZTxPYmplY3Q+IHtcbiAgcmV0dXJuIEtlZmlyLnN0cmVhbShlbWl0dGVyID0+IHtcbiAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGVtaXR0ZXIuZW1pdCwgdHJ1ZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZW1pdHRlci5lbWl0LCB0cnVlKTtcbiAgICB9O1xuICB9KTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZnJvbUV2ZW50c0NhcHR1cmUuanMiXSwibmFtZXMiOlsiZnJvbUV2ZW50c0NhcHR1cmUiLCJ0YXJnZXQiLCJldmVudE5hbWUiLCJLZWZpciIsInN0cmVhbSIsImFkZEV2ZW50TGlzdGVuZXIiLCJlbWl0dGVyIiwiZW1pdCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiXSwibWFwcGluZ3MiOiI7Ozs7O2tCQUl3QkEsaUI7O0FBRnhCOzs7Ozs7QUFFZSxTQUFTQSxpQkFBVCxDQUEyQkMsTUFBM0IsRUFBZ0RDLFNBQWhELEVBQTZGO0FBQzFHLFNBQU9DLGdCQUFNQyxNQUFOLENBQWEsbUJBQVc7QUFDN0JILFdBQU9JLGdCQUFQLENBQXdCSCxTQUF4QixFQUFtQ0ksUUFBUUMsSUFBM0MsRUFBaUQsSUFBakQ7QUFDQSxXQUFPLFlBQU07QUFDWE4sYUFBT08sbUJBQVAsQ0FBMkJOLFNBQTNCLEVBQXNDSSxRQUFRQyxJQUE5QyxFQUFvRCxJQUFwRDtBQUNELEtBRkQ7QUFHRCxHQUxNLENBQVA7QUFNRCIsImZpbGUiOiJmcm9tRXZlbnRzQ2FwdHVyZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIEBmbG93ICovXG5cbmltcG9ydCBLZWZpciBmcm9tICdrZWZpcic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZyb21FdmVudHNDYXB0dXJlKHRhcmdldDogRXZlbnRUYXJnZXQsIGV2ZW50TmFtZTogc3RyaW5nKTogS2VmaXIuT2JzZXJ2YWJsZTxPYmplY3Q+IHtcbiAgcmV0dXJuIEtlZmlyLnN0cmVhbShlbWl0dGVyID0+IHtcbiAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGVtaXR0ZXIuZW1pdCwgdHJ1ZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZW1pdHRlci5lbWl0LCB0cnVlKTtcbiAgICB9O1xuICB9KTtcbn1cbiJdfQ==

@@ -263,2 +263,2 @@ 'use strict';

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9NZW51QnV0dG9uLmpzIl0sIm5hbWVzIjpbIk1lbnVCdXR0b24iLCJzdGF0ZSIsIm9wZW5lZCIsIl9vbkNsb3NlIiwiY2FsbGJhY2siLCJwcm9wcyIsIm9uV2lsbE9wZW4iLCJzZXRTdGF0ZSIsIm9uRGlkT3BlbiIsIm1lcmdlIiwid2luZG93IiwiZmlsdGVyIiwiZWwiLCJwYXJlbnROb2RlcyIsImUiLCJ0YXJnZXQiLCJub2RlIiwiZnJvbUV2ZW50cyIsImtleSIsIndoaWNoIiwibWFwIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJ0YWtlVW50aWxCeSIsIm9uVmFsdWUiLCJjbG9zZSIsIm9uV2lsbENsb3NlIiwiZW1pdCIsIm9wZW4iLCJfZmxvYXRBbmNob3IiLCJyZXBvc2l0aW9uIiwiY2hpbGRyZW4iLCJtZW51IiwicG9zaXRpb25PcHRpb25zIiwibWVudVpJbmRleCIsImRpc2FibGVkIiwidGl0bGUiLCJCdXR0b25Db21wb25lbnQiLCJzdHlsZSIsImNsYXNzTmFtZSIsIm9wZW5lZFN0eWxlIiwib3BlbmVkQ2xhc3NOYW1lIiwiYnV0dG9uIiwidG9nZ2xlIiwiX2l0ZW1DaG9zZW4iLCJDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJvYmplY3QiLCJib29sIiwib25lT2ZUeXBlIiwibnVtYmVyIiwiZnVuYyIsImVsZW1lbnQiLCJkZWZhdWx0UHJvcHMiLCJwb3NpdGlvbiIsImhBbGlnbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBOzs7O0FBRUE7O0FBQ0E7Ozs7QUFDQTs7OztBQUVBOzs7O0FBQ0E7Ozs7QUFFQTs7OztBQUNBOzs7Ozs7QUFaQTs7SUFvQ3FCQSxVOzs7Ozs7Ozs7Ozs7OztvTkF5Qm5CQyxLLEdBQWU7QUFDYkMsY0FBUTtBQURLLEssUUFLZkMsUSxHQUFzQix5Qjs7Ozs7eUJBRWpCQyxRLEVBQXNCO0FBQUE7O0FBQ3pCLFVBQUksS0FBS0gs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U0FBTyxvQkFBVVcsTUFKQTtBQUtqQk4sbUJBQWlCLG9CQUFVTSxNQUxWO0FBTWpCUCxlQUFhLG9CQUFVUSxNQU5OOztBQVFqQmYsbUJBQWlCLG9CQUFVZSxNQVJWO0FBU2pCZCxjQUFZLG9CQUFVZ0IsU0FBVixDQUFvQixDQUFDLG9CQUFVSCxNQUFYLEVBQW1CLG9CQUFVSSxNQUE3QixDQUFwQixDQVRLO0FBVWpCZCxtQkFBaUIsb0JBQVVhLFNBQVYsQ0FBb0IsQ0FBQyxvQkFBVUgsTUFBWCxFQUFtQixvQkFBVUssSUFBN0IsQ0FBcEIsQ0FWQTs7QUFZakJyQixZQUFVLG9CQUFVZixJQVpIO0FBYWpCZ0IsUUFBTSxvQkFBVXFCLE9BYkM7QUFjakIvQyxjQUFZLG9CQUFVOEMsSUFkTDtBQWVqQjVDLGFBQVcsb0JBQVU0QyxJQWZKO0FBZ0JqQjFCLGVBQWEsb0JBQVUwQjtBQWhCTixDO0FBREFwRCxVLENBb0Jac0QsWSxHQUFlO0FBQ3BCckIsbUJBQWlCLEVBQUNzQixVQUFTLFFBQVYsRUFBb0JDLFFBQU8sTUFBM0IsRUFERztBQUVwQm5CLG1CQUFpQjtBQUZHLEM7a0JBcEJIckMsVSIsImZpbGUiOiJNZW51QnV0dG9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogQGZsb3cgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLWZpbmQtZG9tLW5vZGUgKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtOb2RlIGFzIFJlYWN0Tm9kZSwgRWxlbWVudCBhcyBSZWFjdEVsZW1lbnQsIEVsZW1lbnRUeXBlIGFzIFJlYWN0RWxlbWVudFR5cGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7ZmluZERPTU5vZGV9IGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IEZsb2F0QW5jaG9yIGZyb20gJ3JlYWN0LWZsb2F0LWFuY2hvcic7XG5pbXBvcnQgdHlwZSB7T3B0aW9ucyBhcyBGbG9hdEFuY2hvck9wdGlvbnN9IGZyb20gJ3JlYWN0LWZsb2F0LWFuY2hvcic7XG5pbXBvcnQgS2VmaXIgZnJvbSAna2VmaXInO1xuaW1wb3J0IGtlZmlyQnVzIGZyb20gJ2tlZmlyLWJ1cyc7XG5pbXBvcnQgdHlwZSB7QnVzfSBmcm9tICdrZWZpci1idXMnO1xuaW1wb3J0IGZyb21FdmVudHNDYXB0dXJlIGZyb20gJy4vbGliL2Zyb21FdmVudHNDYXB0dXJlJztcbmltcG9ydCBNZW51TGlzdEluc3BlY3RvciBmcm9tICcuL01lbnVMaXN0SW5zcGVjdG9yJztcblxudHlwZSBTdGF0ZSA9IHtcbiAgb3BlbmVkOiBib29sZWFuO1xufTtcbmV4cG9ydCB0eXBlIFByb3BzID0ge1xuICBjbGFzc05hbWU/OiA/c3RyaW5nO1xuICBzdHlsZT86ID9PYmplY3Q7XG4gIGRpc2FibGVkPzogP2Jvb2xlYW47XG4gIHRpdGxlPzogP3N0cmluZztcbiAgb3BlbmVkQ2xhc3NOYW1lPzogP3N0cmluZztcbiAgb3BlbmVkU3R5bGU/OiA/T2JqZWN0O1xuXG4gIHBvc2l0aW9uT3B0aW9uczogRmxvYXRBbmNob3JPcHRpb25zO1xuICBtZW51WkluZGV4PzogP3N0cmluZ3xudW1iZXI7XG4gIEJ1dHRvbkNvbXBvbmVudDogUmVhY3RFbGVtZW50VHlwZTtcblxuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbiAgbWVudT86ID9SZWFjdEVsZW1lbnQ8YW55PjtcbiAgb25XaWxsT3Blbj86ID8oKSA9PiB2b2lkO1xuICBvbkRpZE9wZW4/OiA/KCkgPT4gdm9pZDtcbiAgb25XaWxsQ2xvc2U/OiA/KCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1lbnVCdXR0b24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8UHJvcHMsIFN0YXRlPiB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBvcGVuZWRDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb3BlbmVkU3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG5cbiAgICBwb3NpdGlvbk9wdGlvbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgbWVudVpJbmRleDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm51bWJlcl0pLFxuICAgIEJ1dHRvbkNvbXBvbmVudDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmNdKSxcblxuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgICBtZW51OiBQcm9wVHlwZXMuZWxlbWVudCxcbiAgICBvbldpbGxPcGVuOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkRpZE9wZW46IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uV2lsbENsb3NlOiBQcm9wVHlwZXMuZnVuY1xuICB9O1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgcG9zaXRpb25PcHRpb25zOiB7cG9zaXRpb246J2JvdHRvbScsIGhBbGlnbjonbGVmdCd9LFxuICAgIEJ1dHRvbkNvbXBvbmVudDogJ2J1dHRvbidcbiAgfTtcblxuICBzdGF0ZTogU3RhdGUgPSB7XG4gICAgb3BlbmVkOiBmYWxzZVxuICB9O1xuXG4gIF9mbG9hdEFuY2hvcjogRmxvYXRBbmNob3I7XG4gIF9vbkNsb3NlOiBCdXM8dm9pZD4gPSBrZWZpckJ1cygpO1xuXG4gIG9wZW4oY2FsbGJhY2s/OiAoKSA9PiBhbnkpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5vcGVuZWQpIHJldHVybjtcbiAgICBpZiAodGhpcy5wcm9wcy5vbldpbGxPcGVuKSB0aGlzLnByb3BzLm9uV2lsbE9wZW4oKTtcbiAgICB0aGlzLnNldFN0YXRlKHtvcGVuZWQ6IHRydWV9LCAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5vbkRpZE9wZW4pIHRoaXMucHJvcHMub25EaWRPcGVuKCk7XG4gICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG4gICAgfSk7XG5cbiAgICAvLyBDbGlja2luZyBvdXRzaWRlIG9mIHRoZSBkcm9wZG93biBvciBwcmVzc2luZyBlc2NhcGUgc2hvdWxkIGNsb3NlIHRoZVxuICAgIC8vIGRyb3Bkb3duLlxuICAgIEtlZmlyLm1lcmdlKFtcbiAgICAgIEtlZmlyLm1lcmdlKFtcbiAgICAgICAgZnJvbUV2ZW50c0NhcHR1cmUod2luZG93LCAnY2xpY2snKSxcbiAgICAgICAgZnJvbUV2ZW50c0NhcHR1cmUod2luZG93LCAnZm9jdXMnKVxuICAgICAgXSlcbiAgICAgICAgLmZpbHRlcihlID0+IHtcbiAgICAgICAgICBjb25zdCBlbCA9IGZpbmRET01Ob2RlKHRoaXMpO1xuICAgICAgICAgIGZvciAobGV0IG5vZGUgb2YgRmxvYXRBbmNob3IucGFyZW50Tm9kZXMoZS50YXJnZXQpKSB7XG4gICAgICAgICAgICBpZiAobm9kZSA9PT0gZWwpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pLFxuICAgICAgS2VmaXIuZnJvbUV2ZW50cyh3aW5kb3csICdrZXlkb3duJylcbiAgICAgICAgLmZpbHRlcihlID0+IGUua2V5ID8gZS5rZXkgPT09ICdFc2NhcGUnIDogZS53aGljaCA9PT0gMjcpXG4gICAgICAgIC5tYXAoZSA9PiB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH0pXG4gICAgXSlcbiAgICAgIC50YWtlVW50aWxCeSh0aGlzLl9vbkNsb3NlKVxuICAgICAgLm9uVmFsdWUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIGlmICghdGhpcy5zdGF0ZS5vcGVuZWQpIHJldHVybjtcbiAgICBpZiAodGhpcy5wcm9wcy5vbldpbGxDbG9zZSkgdGhpcy5wcm9wcy5vbldpbGxDbG9zZSgpO1xuICAgIHRoaXMuc2V0U3RhdGUoe29wZW5lZDogZmFsc2V9KTtcbiAgICB0aGlzLl9vbkNsb3NlLmVtaXQoKTtcbiAgfVxuXG4gIHRvZ2dsZSgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5vcGVuZWQpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgcmVwb3NpdGlvbigpIHtcbiAgICB0aGlzLl9mbG9hdEFuY2hvci5yZXBvc2l0aW9uKCk7XG4gIH1cblxuICBfaXRlbUNob3NlbigpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLl9vbkNsb3NlLmVtaXQoKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBjaGlsZHJlbiwgbWVudSxcbiAgICAgIHBvc2l0aW9uT3B0aW9ucywgbWVudVpJbmRleCxcbiAgICAgIGRpc2FibGVkLCB0aXRsZSwgQnV0dG9uQ29tcG9uZW50XG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge29wZW5lZH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgbGV0IHN0eWxlID0gdGhpcy5wcm9wcy5zdHlsZTtcbiAgICBsZXQgY2xhc3NOYW1lID0gdGhpcy5wcm9wcy5jbGFzc05hbWU7XG4gICAgaWYgKG9wZW5lZCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMub3BlbmVkU3R5bGUpIHtcbiAgICAgICAgc3R5bGUgPSB7Li4uc3R5bGUsIC4uLnRoaXMucHJvcHMub3BlbmVkU3R5bGV9O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucHJvcHMub3BlbmVkQ2xhc3NOYW1lKSB7XG4gICAgICAgIGNsYXNzTmFtZSA9IGAke2NsYXNzTmFtZXx8Jyd9ICR7dGhpcy5wcm9wcy5vcGVuZWRDbGFzc05hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEZsb2F0QW5jaG9yXG4gICAgICAgIHJlZj17ZWwgPT4ge1xuICAgICAgICAgIGlmIChlbCkgdGhpcy5fZmxvYXRBbmNob3IgPSBlbDtcbiAgICAgICAgfX1cbiAgICAgICAgb3B0aW9ucz17cG9zaXRpb25PcHRpb25zfVxuICAgICAgICB6SW5kZXg9e21lbnVaSW5kZXh9XG4gICAgICAgIGFuY2hvcj17XG4gICAgICAgICAgPEJ1dHRvbkNvbXBvbmVudFxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICAgIG9uTW91c2VEb3duPXtlID0+IHtcbiAgICAgICAgICAgICAgaWYgKGUuYnV0dG9uICE9PSAwKSByZXR1cm47XG4gICAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25LZXlQcmVzcz17ZT0+e1xuICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicgfHwgZS5rZXkgPT09ICcgJykge1xuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBhcmlhLWhhc3BvcHVwPXt0cnVlfVxuICAgICAgICAgICAgYXJpYS1leHBhbmRlZD17b3BlbmVkfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICA8L0J1dHRvbkNvbXBvbmVudD5cbiAgICAgICAgfVxuICAgICAgICBmbG9hdD17XG4gICAgICAgICAgIW9wZW5lZCA/IG51bGwgOlxuICAgICAgICAgICAgPE1lbnVMaXN0SW5zcGVjdG9yIG9uSXRlbUNob3Nlbj17KCkgPT4gdGhpcy5faXRlbUNob3NlbigpfT5cbiAgICAgICAgICAgICAge21lbnV9XG4gICAgICAgICAgICA8L01lbnVMaXN0SW5zcGVjdG9yPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9NZW51QnV0dG9uLmpzIl0sIm5hbWVzIjpbIk1lbnVCdXR0b24iLCJzdGF0ZSIsIm9wZW5lZCIsIl9vbkNsb3NlIiwiY2FsbGJhY2siLCJwcm9wcyIsIm9uV2lsbE9wZW4iLCJzZXRTdGF0ZSIsIm9uRGlkT3BlbiIsIktlZmlyIiwibWVyZ2UiLCJ3aW5kb3ciLCJmaWx0ZXIiLCJlbCIsIkZsb2F0QW5jaG9yIiwicGFyZW50Tm9kZXMiLCJlIiwidGFyZ2V0Iiwibm9kZSIsImZyb21FdmVudHMiLCJrZXkiLCJ3aGljaCIsIm1hcCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwidGFrZVVudGlsQnkiLCJvblZhbHVlIiwiY2xvc2UiLCJvbldpbGxDbG9zZSIsImVtaXQiLCJvcGVuIiwiX2Zsb2F0QW5jaG9yIiwicmVwb3NpdGlvbiIsImNoaWxkcmVuIiwibWVudSIsInBvc2l0aW9uT3B0aW9ucyIsIm1lbnVaSW5kZXgiLCJkaXNhYmxlZCIsInRpdGxlIiwiQnV0dG9uQ29tcG9uZW50Iiwic3R5bGUiLCJjbGFzc05hbWUiLCJvcGVuZWRTdHlsZSIsIm9wZW5lZENsYXNzTmFtZSIsImJ1dHRvbiIsInRvZ2dsZSIsIl9pdGVtQ2hvc2VuIiwiUmVhY3QiLCJDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJvYmplY3QiLCJib29sIiwib25lT2ZUeXBlIiwibnVtYmVyIiwiZnVuYyIsImVsZW1lbnQiLCJkZWZhdWx0UHJvcHMiLCJwb3NpdGlvbiIsImhBbGlnbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBOzs7O0FBRUE7O0FBQ0E7Ozs7QUFDQTs7OztBQUVBOzs7O0FBQ0E7Ozs7QUFFQTs7OztBQUNBOzs7Ozs7QUFaQTs7SUFvQ3FCQSxVOzs7Ozs7Ozs7Ozs7OztvTkF5Qm5CQyxLLEdBQWU7QUFDYkMsY0FBUTtBQURLLEssUUFLZkMsUSxHQUFzQix5Qjs7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QlIsYUFBV1Msb0JBQVVDLE1BREo7QUFFakJYLFNBQU9VLG9CQUFVRSxNQUZBO0FBR2pCZixZQUFVYSxvQkFBVUcsSUFISDtBQUlqQmYsU0FBT1ksb0JBQVVDLE1BSkE7QUFLakJSLG1CQUFpQk8sb0JBQVVDLE1BTFY7QUFNakJULGVBQWFRLG9CQUFVRSxNQU5OOztBQVFqQmpCLG1CQUFpQmUsb0JBQVVFLE1BUlY7QUFTakJoQixjQUFZYyxvQkFBVUksU0FBVixDQUFvQixDQUFDSixvQkFBVUMsTUFBWCxFQUFtQkQsb0JBQVVLLE1BQTdCLENBQXBCLENBVEs7QUFVakJoQixtQkFBaUJXLG9CQUFVSSxTQUFWLENBQW9CLENBQUNKLG9CQUFVQyxNQUFYLEVBQW1CRCxvQkFBVU0sSUFBN0IsQ0FBcEIsQ0FWQTs7QUFZakJ2QixZQUFVaUIsb0JBQVVoQyxJQVpIO0FBYWpCZ0IsUUFBTWdCLG9CQUFVTyxPQWJDO0FBY2pCbkQsY0FBWTRDLG9CQUFVTSxJQWRMO0FBZWpCaEQsYUFBVzBDLG9CQUFVTSxJQWZKO0FBZ0JqQjVCLGVBQWFzQixvQkFBVU07QUFoQk4sQztBQURBeEQsVSxDQW9CWjBELFksR0FBZTtBQUNwQnZCLG1CQUFpQixFQUFDd0IsVUFBUyxRQUFWLEVBQW9CQyxRQUFPLE1BQTNCLEVBREc7QUFFcEJyQixtQkFBaUI7QUFGRyxDO2tCQXBCSHZDLFUiLCJmaWxlIjoiTWVudUJ1dHRvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIEBmbG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby1maW5kLWRvbS1ub2RlICovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7Tm9kZSBhcyBSZWFjdE5vZGUsIEVsZW1lbnQgYXMgUmVhY3RFbGVtZW50LCBFbGVtZW50VHlwZSBhcyBSZWFjdEVsZW1lbnRUeXBlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge2ZpbmRET01Ob2RlfSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBGbG9hdEFuY2hvciBmcm9tICdyZWFjdC1mbG9hdC1hbmNob3InO1xuaW1wb3J0IHR5cGUge09wdGlvbnMgYXMgRmxvYXRBbmNob3JPcHRpb25zfSBmcm9tICdyZWFjdC1mbG9hdC1hbmNob3InO1xuaW1wb3J0IEtlZmlyIGZyb20gJ2tlZmlyJztcbmltcG9ydCBrZWZpckJ1cyBmcm9tICdrZWZpci1idXMnO1xuaW1wb3J0IHR5cGUge0J1c30gZnJvbSAna2VmaXItYnVzJztcbmltcG9ydCBmcm9tRXZlbnRzQ2FwdHVyZSBmcm9tICcuL2xpYi9mcm9tRXZlbnRzQ2FwdHVyZSc7XG5pbXBvcnQgTWVudUxpc3RJbnNwZWN0b3IgZnJvbSAnLi9NZW51TGlzdEluc3BlY3Rvcic7XG5cbnR5cGUgU3RhdGUgPSB7XG4gIG9wZW5lZDogYm9vbGVhbjtcbn07XG5leHBvcnQgdHlwZSBQcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogP3N0cmluZztcbiAgc3R5bGU/OiA/T2JqZWN0O1xuICBkaXNhYmxlZD86ID9ib29sZWFuO1xuICB0aXRsZT86ID9zdHJpbmc7XG4gIG9wZW5lZENsYXNzTmFtZT86ID9zdHJpbmc7XG4gIG9wZW5lZFN0eWxlPzogP09iamVjdDtcblxuICBwb3NpdGlvbk9wdGlvbnM6IEZsb2F0QW5jaG9yT3B0aW9ucztcbiAgbWVudVpJbmRleD86ID9zdHJpbmd8bnVtYmVyO1xuICBCdXR0b25Db21wb25lbnQ6IFJlYWN0RWxlbWVudFR5cGU7XG5cbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG4gIG1lbnU/OiA/UmVhY3RFbGVtZW50PGFueT47XG4gIG9uV2lsbE9wZW4/OiA/KCkgPT4gdm9pZDtcbiAgb25EaWRPcGVuPzogPygpID0+IHZvaWQ7XG4gIG9uV2lsbENsb3NlPzogPygpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZW51QnV0dG9uIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFByb3BzLCBTdGF0ZT4ge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb3BlbmVkQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9wZW5lZFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuXG4gICAgcG9zaXRpb25PcHRpb25zOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG1lbnVaSW5kZXg6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5udW1iZXJdKSxcbiAgICBCdXR0b25Db21wb25lbnQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5mdW5jXSksXG5cbiAgICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gICAgbWVudTogUHJvcFR5cGVzLmVsZW1lbnQsXG4gICAgb25XaWxsT3BlbjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25EaWRPcGVuOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbldpbGxDbG9zZTogUHJvcFR5cGVzLmZ1bmNcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIHBvc2l0aW9uT3B0aW9uczoge3Bvc2l0aW9uOidib3R0b20nLCBoQWxpZ246J2xlZnQnfSxcbiAgICBCdXR0b25Db21wb25lbnQ6ICdidXR0b24nXG4gIH07XG5cbiAgc3RhdGU6IFN0YXRlID0ge1xuICAgIG9wZW5lZDogZmFsc2VcbiAgfTtcblxuICBfZmxvYXRBbmNob3I6IEZsb2F0QW5jaG9yO1xuICBfb25DbG9zZTogQnVzPHZvaWQ+ID0ga2VmaXJCdXMoKTtcblxuICBvcGVuKGNhbGxiYWNrPzogKCkgPT4gYW55KSB7XG4gICAgaWYgKHRoaXMuc3RhdGUub3BlbmVkKSByZXR1cm47XG4gICAgaWYgKHRoaXMucHJvcHMub25XaWxsT3BlbikgdGhpcy5wcm9wcy5vbldpbGxPcGVuKCk7XG4gICAgdGhpcy5zZXRTdGF0ZSh7b3BlbmVkOiB0cnVlfSwgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvcHMub25EaWRPcGVuKSB0aGlzLnByb3BzLm9uRGlkT3BlbigpO1xuICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpO1xuICAgIH0pO1xuXG4gICAgLy8gQ2xpY2tpbmcgb3V0c2lkZSBvZiB0aGUgZHJvcGRvd24gb3IgcHJlc3NpbmcgZXNjYXBlIHNob3VsZCBjbG9zZSB0aGVcbiAgICAvLyBkcm9wZG93bi5cbiAgICBLZWZpci5tZXJnZShbXG4gICAgICBLZWZpci5tZXJnZShbXG4gICAgICAgIGZyb21FdmVudHNDYXB0dXJlKHdpbmRvdywgJ2NsaWNrJyksXG4gICAgICAgIGZyb21FdmVudHNDYXB0dXJlKHdpbmRvdywgJ2ZvY3VzJylcbiAgICAgIF0pXG4gICAgICAgIC5maWx0ZXIoZSA9PiB7XG4gICAgICAgICAgY29uc3QgZWwgPSBmaW5kRE9NTm9kZSh0aGlzKTtcbiAgICAgICAgICBmb3IgKGxldCBub2RlIG9mIEZsb2F0QW5jaG9yLnBhcmVudE5vZGVzKGUudGFyZ2V0KSkge1xuICAgICAgICAgICAgaWYgKG5vZGUgPT09IGVsKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KSxcbiAgICAgIEtlZmlyLmZyb21FdmVudHMod2luZG93LCAna2V5ZG93bicpXG4gICAgICAgIC5maWx0ZXIoZSA9PiBlLmtleSA/IGUua2V5ID09PSAnRXNjYXBlJyA6IGUud2hpY2ggPT09IDI3KVxuICAgICAgICAubWFwKGUgPT4ge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9KVxuICAgIF0pXG4gICAgICAudGFrZVVudGlsQnkodGhpcy5fb25DbG9zZSlcbiAgICAgIC5vblZhbHVlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfSk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICBpZiAoIXRoaXMuc3RhdGUub3BlbmVkKSByZXR1cm47XG4gICAgaWYgKHRoaXMucHJvcHMub25XaWxsQ2xvc2UpIHRoaXMucHJvcHMub25XaWxsQ2xvc2UoKTtcbiAgICB0aGlzLnNldFN0YXRlKHtvcGVuZWQ6IGZhbHNlfSk7XG4gICAgdGhpcy5fb25DbG9zZS5lbWl0KCk7XG4gIH1cblxuICB0b2dnbGUoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUub3BlbmVkKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cbiAgfVxuXG4gIHJlcG9zaXRpb24oKSB7XG4gICAgdGhpcy5fZmxvYXRBbmNob3IucmVwb3NpdGlvbigpO1xuICB9XG5cbiAgX2l0ZW1DaG9zZW4oKSB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5fb25DbG9zZS5lbWl0KCk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2hpbGRyZW4sIG1lbnUsXG4gICAgICBwb3NpdGlvbk9wdGlvbnMsIG1lbnVaSW5kZXgsXG4gICAgICBkaXNhYmxlZCwgdGl0bGUsIEJ1dHRvbkNvbXBvbmVudFxuICAgIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHtvcGVuZWR9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGxldCBzdHlsZSA9IHRoaXMucHJvcHMuc3R5bGU7XG4gICAgbGV0IGNsYXNzTmFtZSA9IHRoaXMucHJvcHMuY2xhc3NOYW1lO1xuICAgIGlmIChvcGVuZWQpIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLm9wZW5lZFN0eWxlKSB7XG4gICAgICAgIHN0eWxlID0gey4uLnN0eWxlLCAuLi50aGlzLnByb3BzLm9wZW5lZFN0eWxlfTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnByb3BzLm9wZW5lZENsYXNzTmFtZSkge1xuICAgICAgICBjbGFzc05hbWUgPSBgJHtjbGFzc05hbWV8fCcnfSAke3RoaXMucHJvcHMub3BlbmVkQ2xhc3NOYW1lfWA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxGbG9hdEFuY2hvclxuICAgICAgICByZWY9e2VsID0+IHtcbiAgICAgICAgICBpZiAoZWwpIHRoaXMuX2Zsb2F0QW5jaG9yID0gZWw7XG4gICAgICAgIH19XG4gICAgICAgIG9wdGlvbnM9e3Bvc2l0aW9uT3B0aW9uc31cbiAgICAgICAgekluZGV4PXttZW51WkluZGV4fVxuICAgICAgICBhbmNob3I9e1xuICAgICAgICAgIDxCdXR0b25Db21wb25lbnRcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgICAgICBvbk1vdXNlRG93bj17ZSA9PiB7XG4gICAgICAgICAgICAgIGlmIChlLmJ1dHRvbiAhPT0gMCkgcmV0dXJuO1xuICAgICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uS2V5UHJlc3M9e2U9PntcbiAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInIHx8IGUua2V5ID09PSAnICcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD17dHJ1ZX1cbiAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9e29wZW5lZH1cbiAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgPC9CdXR0b25Db21wb25lbnQ+XG4gICAgICAgIH1cbiAgICAgICAgZmxvYXQ9e1xuICAgICAgICAgICFvcGVuZWQgPyBudWxsIDpcbiAgICAgICAgICAgIDxNZW51TGlzdEluc3BlY3RvciBvbkl0ZW1DaG9zZW49eygpID0+IHRoaXMuX2l0ZW1DaG9zZW4oKX0+XG4gICAgICAgICAgICAgIHttZW51fVxuICAgICAgICAgICAgPC9NZW51TGlzdEluc3BlY3Rvcj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICApO1xuICB9XG59XG4iXX0=

@@ -236,2 +236,2 @@ 'use strict';

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9NZW51SXRlbS5qcyJdLCJuYW1lcyI6WyJNZW51SXRlbSIsInN0YXRlIiwiaGlnaGxpZ2h0ZWQiLCJfZWxTZXR0ZXIiLCJlbCIsIl9lbCIsIl9tZW51TGlzdEhhbmRsZSIsInRha2VLZXlib2FyZCIsInJlbGVhc2VLZXlib2FyZCIsImxvY2tIaWdobGlnaHQiLCJ1bmxvY2tIaWdobGlnaHQiLCJieUtleWJvYXJkIiwiaGlnaGxpZ2h0IiwidW5oaWdobGlnaHQiLCJkaXJlY3Rpb24iLCJwcmV2Q3Vyc29yTG9jYXRpb24iLCJtb3ZlQ3Vyc29yIiwiY29udGV4dCIsIm1lbnVMaXN0IiwicmVnaXN0ZXJJdGVtIiwicHJvcHMiLCJub3RpZnlIaWdobGlnaHRlZCIsInNldFN0YXRlIiwic2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCIsInNjcm9sbEludG9WaWV3Iiwib25IaWdobGlnaHRDaGFuZ2UiLCJub3RpZnlFdmVudCIsImV2ZW50IiwidHlwZSIsIm9uSXRlbUNob3NlbiIsIm9uTGVmdFB1c2hlZCIsIm9uUmlnaHRQdXNoZWQiLCJ1bnJlZ2lzdGVyIiwibmV3UHJvcHMiLCJ1cGRhdGVQcm9wcyIsImNoaWxkcmVuIiwib25Nb3VzZUxlYXZlIiwic3R5bGUiLCJjbGFzc05hbWUiLCJoaWdobGlnaHRlZFN0eWxlIiwiaGlnaGxpZ2h0ZWRDbGFzc05hbWUiLCJpdGVtQ2hvc2VuIiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiZnVuYyIsInN0cmluZyIsIm9iamVjdCIsImluZGV4IiwibnVtYmVyIiwibm9kZSIsImJvb2wiLCJjb250ZXh0VHlwZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOzs7O0FBRUE7Ozs7QUFHQTs7Ozs7O0lBNEJxQkEsUTs7Ozs7Ozs7Ozs7Ozs7Z05BRW5CQyxLLEdBQVE7QUFDTkMsbUJBQWE7QUFEUCxLLFFBNEJSQyxTLEdBQVksVUFBQ0MsRUFBRCxFQUFzQjtBQUNoQyxZQUFLQyxHQUFM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QyxNQVhBO0FBWWpCWixnQkFBYyxvQkFBVVEsSUFaUDs7QUFjakJULFlBQVUsb0JBQVVjLElBZEg7O0FBZ0JqQixtQkFBaUIsb0JBQVVDLElBaEJWO0FBaUJqQixtQkFBaUIsb0JBQVVBO0FBakJWLEM7QUFMQWxELFEsQ0F5QlptRCxZLEdBQWU7QUFDcEJqQyxZQUFVLG9CQUFVNEI7QUFEQSxDO2tCQXpCSDlDLFEiLCJmaWxlIjoiTWVudUl0ZW0uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBAZmxvdyAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge05vZGUgYXMgUmVhY3ROb2RlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuXG5pbXBvcnQgdHlwZSBNZW51RXZlbnQgZnJvbSAnLi9ldmVudHMvTWVudUV2ZW50JztcbmltcG9ydCBDaG9zZW5FdmVudCBmcm9tICcuL2V2ZW50cy9DaG9zZW5FdmVudCc7XG5pbXBvcnQgdHlwZSB7TWVudUxpc3RDb250ZXh0LCBNZW51TGlzdEhhbmRsZX0gZnJvbSAnLi9NZW51TGlzdCc7XG5pbXBvcnQgdHlwZSB7RGlyZWN0aW9uLCBSZWN0fSBmcm9tICcuL3R5cGVzJztcblxudHlwZSBTdGF0ZSA9IHtcbiAgaGlnaGxpZ2h0ZWQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBQcm9wcyA9IHtcbiAgb25JdGVtQ2hvc2VuPzogPyhldmVudDogQ2hvc2VuRXZlbnQpID0+IHZvaWQ7XG4gIG9uTGVmdFB1c2hlZD86ID8oZXZlbnQ6IE1lbnVFdmVudCkgPT4gdm9pZDtcbiAgb25SaWdodFB1c2hlZD86ID8oZXZlbnQ6IE1lbnVFdmVudCkgPT4gdm9pZDtcbiAgb25IaWdobGlnaHRDaGFuZ2U/OiA/KGhpZ2hsaWdodGVkOiBib29sZWFuLCBkZXRhaWxzOiB7YnlLZXlib2FyZDogP2Jvb2xlYW4sIHByZXZDdXJzb3JMb2NhdGlvbjogP1JlY3QsIGRpcmVjdGlvbjogP0RpcmVjdGlvbn0pID0+IHZvaWQ7XG5cbiAgY2xhc3NOYW1lPzogP3N0cmluZztcbiAgc3R5bGU/OiA/T2JqZWN0O1xuICBoaWdobGlnaHRlZENsYXNzTmFtZT86ID9zdHJpbmc7XG4gIGhpZ2hsaWdodGVkU3R5bGU/OiA/T2JqZWN0O1xuXG4gIGluZGV4PzogP251bWJlcjtcbiAgb25Nb3VzZUxlYXZlPzogP0Z1bmN0aW9uO1xuXG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuXG4gICdhcmlhLWhhc3BvcHVwJz86ID9ib29sZWFuO1xuICAnYXJpYS1leHBhbmRlZCc/OiA/Ym9vbGVhbjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1lbnVJdGVtIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFByb3BzLCBTdGF0ZT4ge1xuICBfbWVudUxpc3RIYW5kbGU6IE1lbnVMaXN0SGFuZGxlO1xuICBzdGF0ZSA9IHtcbiAgICBoaWdobGlnaHRlZDogZmFsc2VcbiAgfTtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBvbkl0ZW1DaG9zZW46IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uSGlnaGxpZ2h0Q2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkxlZnRQdXNoZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uUmlnaHRQdXNoZWQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGhpZ2hsaWdodGVkQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGhpZ2hsaWdodGVkU3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG5cbiAgICBpbmRleDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvbk1vdXNlTGVhdmU6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gICAgJ2FyaWEtaGFzcG9wdXAnOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAnYXJpYS1leHBhbmRlZCc6IFByb3BUeXBlcy5ib29sXG4gIH07XG5cbiAgc3RhdGljIGNvbnRleHRUeXBlcyA9IHtcbiAgICBtZW51TGlzdDogUHJvcFR5cGVzLm9iamVjdFxuICB9O1xuXG4gIF9lbDogP0hUTUxFbGVtZW50O1xuICBfZWxTZXR0ZXIgPSAoZWw6ID9IVE1MRWxlbWVudCkgPT4ge1xuICAgIHRoaXMuX2VsID0gZWw7XG4gIH07XG5cbiAgaGFzSGlnaGxpZ2h0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmhpZ2hsaWdodGVkO1xuICB9XG5cbiAgdGFrZUtleWJvYXJkKCkge1xuICAgIHRoaXMuX21lbnVMaXN0SGFuZGxlLnRha2VLZXlib2FyZCgpO1xuICB9XG5cbiAgcmVsZWFzZUtleWJvYXJkKCkge1xuICAgIHRoaXMuX21lbnVMaXN0SGFuZGxlLnJlbGVhc2VLZXlib2FyZCgpO1xuICB9XG5cbiAgbG9ja0hpZ2hsaWdodCgpIHtcbiAgICB0aGlzLl9tZW51TGlzdEhhbmRsZS5sb2NrSGlnaGxpZ2h0KCk7XG4gIH1cblxuICB1bmxvY2tIaWdobGlnaHQoKSB7XG4gICAgdGhpcy5fbWVudUxpc3RIYW5kbGUudW5sb2NrSGlnaGxpZ2h0KCk7XG4gIH1cblxuICAvLyBieUtleWJvYXJkIGZvcmNlcyBmb2N1cyBpbW1lZGlhdGVseSBhbmQgc2Nyb2xscyB0aGUgaXRlbSBpbnRvIHZpZXcuXG4gIC8vIFdpdGggaXQgZmFsc2UsIHRoZSBoaWdobGlnaHQgbWlnaHQgYmUgZGVsYXllZCBkZXBlbmRpbmcgb24gbW91c2UgbW92ZW1lbnRcbiAgLy8gYW5kIHdvbid0IGNhdXNlIGFueXRoaW5nIHRvIHNjcm9sbC5cbiAgaGlnaGxpZ2h0KGJ5S2V5Ym9hcmQ6IGJvb2xlYW49dHJ1ZSkge1xuICAgIHRoaXMuX21lbnVMaXN0SGFuZGxlLmhpZ2hsaWdodChieUtleWJvYXJkKTtcbiAgfVxuXG4gIHVuaGlnaGxpZ2h0KCkge1xuICAgIHRoaXMuX21lbnVMaXN0SGFuZGxlLnVuaGlnaGxpZ2h0KCk7XG4gIH1cblxuICBtb3ZlQ3Vyc29yKGRpcmVjdGlvbjogRGlyZWN0aW9uLCBwcmV2Q3Vyc29yTG9jYXRpb246ID9SZWN0KSB7XG4gICAgdGhpcy5fbWVudUxpc3RIYW5kbGUubW92ZUN1cnNvcihkaXJlY3Rpb24sIHByZXZDdXJzb3JMb2NhdGlvbik7XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBjb25zdCBlbCA9IHRoaXMuX2VsO1xuICAgIC8qOjogaWYgKCFlbCkgdGhyb3cgbmV3IEVycm9yKCk7ICovXG5cbiAgICB0aGlzLl9tZW51TGlzdEhhbmRsZSA9ICh0aGlzLmNvbnRleHQubWVudUxpc3Q6TWVudUxpc3RDb250ZXh0KS5yZWdpc3Rlckl0ZW0odGhpcy5wcm9wcywge1xuICAgICAgbm90aWZ5SGlnaGxpZ2h0ZWQ6IChoaWdobGlnaHRlZDogYm9vbGVhbiwgYnlLZXlib2FyZDogP2Jvb2xlYW4sIGRpcmVjdGlvbjogP0RpcmVjdGlvbiwgcHJldkN1cnNvckxvY2F0aW9uOiA/UmVjdCkgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtoaWdobGlnaHRlZH0sICgpID0+IHtcbiAgICAgICAgICBpZiAoaGlnaGxpZ2h0ZWQgJiYgYnlLZXlib2FyZCkge1xuICAgICAgICAgICAgY29uc3QgZWwgPSB0aGlzLl9lbDtcbiAgICAgICAgICAgIC8qOjogaWYgKCFlbCkgdGhyb3cgbmV3IEVycm9yKCk7ICovXG4gICAgICAgICAgICBpZiAodHlwZW9mIGVsLnNjcm9sbEludG9WaWV3SWZOZWVkZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgZWwuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlbC5zY3JvbGxJbnRvVmlldykge1xuICAgICAgICAgICAgICBlbC5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uSGlnaGxpZ2h0Q2hhbmdlKSB7XG4gICAgICAgICAgdGhpcy5wcm9wcy5vbkhpZ2hsaWdodENoYW5nZShoaWdobGlnaHRlZCwge2J5S2V5Ym9hcmQsIHByZXZDdXJzb3JMb2NhdGlvbiwgZGlyZWN0aW9ufSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBub3RpZnlFdmVudDogKGV2ZW50OiBNZW51RXZlbnQpID0+IHtcbiAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2Nob3Nlbic6XG4gICAgICAgICAgLyo6OiBpZiAoIShldmVudCBpbnN0YW5jZW9mIENob3NlbkV2ZW50KSkgdGhyb3cgbmV3IEVycm9yKCk7ICovXG4gICAgICAgICAgaWYgKHRoaXMucHJvcHMub25JdGVtQ2hvc2VuKSB0aGlzLnByb3BzLm9uSXRlbUNob3NlbihldmVudCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uTGVmdFB1c2hlZCkgdGhpcy5wcm9wcy5vbkxlZnRQdXNoZWQoZXZlbnQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SaWdodFB1c2hlZCkgdGhpcy5wcm9wcy5vblJpZ2h0UHVzaGVkKGV2ZW50KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIGVsKTtcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMuX21lbnVMaXN0SGFuZGxlLnVucmVnaXN0ZXIoKTtcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV3UHJvcHM6IFByb3BzKSB7XG4gICAgdGhpcy5fbWVudUxpc3RIYW5kbGUudXBkYXRlUHJvcHMobmV3UHJvcHMpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtjaGlsZHJlbiwgb25Nb3VzZUxlYXZlfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge2hpZ2hsaWdodGVkfSA9IHRoaXMuc3RhdGU7XG5cbiAgICBsZXQgc3R5bGUgPSB0aGlzLnByb3BzLnN0eWxlO1xuICAgIGxldCBjbGFzc05hbWUgPSB0aGlzLnByb3BzLmNsYXNzTmFtZTtcbiAgICBpZiAoaGlnaGxpZ2h0ZWQpIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLmhpZ2hsaWdodGVkU3R5bGUpIHtcbiAgICAgICAgc3R5bGUgPSB7Li4uc3R5bGUsIC4uLnRoaXMucHJvcHMuaGlnaGxpZ2h0ZWRTdHlsZX07XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5wcm9wcy5oaWdobGlnaHRlZENsYXNzTmFtZSkge1xuICAgICAgICBjbGFzc05hbWUgPSBgJHtjbGFzc05hbWV8fCcnfSAke3RoaXMucHJvcHMuaGlnaGxpZ2h0ZWRDbGFzc05hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICByZWY9e3RoaXMuX2VsU2V0dGVyfVxuICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgICBvbkNsaWNrPXsoKT0+dGhpcy5fbWVudUxpc3RIYW5kbGUuaXRlbUNob3NlbigpfVxuICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IHRoaXMuaGlnaGxpZ2h0KGZhbHNlKX1cbiAgICAgICAgb25Nb3VzZUxlYXZlPXtvbk1vdXNlTGVhdmUgfHwgKCgpID0+IHRoaXMudW5oaWdobGlnaHQoKSl9XG4gICAgICAgIHJvbGU9XCJtZW51aXRlbVwiXG4gICAgICAgIGFyaWEtaGFzcG9wdXA9e3RoaXMucHJvcHNbJ2FyaWEtaGFzcG9wdXAnXX1cbiAgICAgICAgYXJpYS1leHBhbmRlZD17dGhpcy5wcm9wc1snYXJpYS1leHBhbmRlZCddfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9NZW51SXRlbS5qcyJdLCJuYW1lcyI6WyJNZW51SXRlbSIsInN0YXRlIiwiaGlnaGxpZ2h0ZWQiLCJfZWxTZXR0ZXIiLCJlbCIsIl9lbCIsIl9tZW51TGlzdEhhbmRsZSIsInRha2VLZXlib2FyZCIsInJlbGVhc2VLZXlib2FyZCIsImxvY2tIaWdobGlnaHQiLCJ1bmxvY2tIaWdobGlnaHQiLCJieUtleWJvYXJkIiwiaGlnaGxpZ2h0IiwidW5oaWdobGlnaHQiLCJkaXJlY3Rpb24iLCJwcmV2Q3Vyc29yTG9jYXRpb24iLCJtb3ZlQ3Vyc29yIiwiY29udGV4dCIsIm1lbnVMaXN0IiwicmVnaXN0ZXJJdGVtIiwicHJvcHMiLCJub3RpZnlIaWdobGlnaHRlZCIsInNldFN0YXRlIiwic2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCIsInNjcm9sbEludG9WaWV3Iiwib25IaWdobGlnaHRDaGFuZ2UiLCJub3RpZnlFdmVudCIsImV2ZW50IiwidHlwZSIsIm9uSXRlbUNob3NlbiIsIm9uTGVmdFB1c2hlZCIsIm9uUmlnaHRQdXNoZWQiLCJ1bnJlZ2lzdGVyIiwibmV3UHJvcHMiLCJ1cGRhdGVQcm9wcyIsImNoaWxkcmVuIiwib25Nb3VzZUxlYXZlIiwic3R5bGUiLCJjbGFzc05hbWUiLCJoaWdobGlnaHRlZFN0eWxlIiwiaGlnaGxpZ2h0ZWRDbGFzc05hbWUiLCJpdGVtQ2hvc2VuIiwiUmVhY3QiLCJDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJmdW5jIiwic3RyaW5nIiwib2JqZWN0IiwiaW5kZXgiLCJudW1iZXIiLCJub2RlIiwiYm9vbCIsImNvbnRleHRUeXBlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7Ozs7QUFFQTs7OztBQUdBOzs7Ozs7SUE0QnFCQSxROzs7Ozs7Ozs7Ozs7OztnTkFFbkJDLEssR0FBUTtBQUNOQyxtQkFBYTtBQURQLEssUUE0QlJDLFMsR0FBWSxVQUFDQyxFQUFELEVB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akJSLG9CQUFrQk0sb0JBQVVHLE1BVFg7O0FBV2pCQyxTQUFPSixvQkFBVUssTUFYQTtBQVlqQmQsZ0JBQWNTLG9CQUFVQyxJQVpQOztBQWNqQlgsWUFBVVUsb0JBQVVNLElBZEg7O0FBZ0JqQixtQkFBaUJOLG9CQUFVTyxJQWhCVjtBQWlCakIsbUJBQWlCUCxvQkFBVU87QUFqQlYsQztBQUxBcEQsUSxDQXlCWnFELFksR0FBZTtBQUNwQm5DLFlBQVUyQixvQkFBVUc7QUFEQSxDO2tCQXpCSGhELFEiLCJmaWxlIjoiTWVudUl0ZW0uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBAZmxvdyAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge05vZGUgYXMgUmVhY3ROb2RlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuXG5pbXBvcnQgdHlwZSBNZW51RXZlbnQgZnJvbSAnLi9ldmVudHMvTWVudUV2ZW50JztcbmltcG9ydCBDaG9zZW5FdmVudCBmcm9tICcuL2V2ZW50cy9DaG9zZW5FdmVudCc7XG5pbXBvcnQgdHlwZSB7TWVudUxpc3RDb250ZXh0LCBNZW51TGlzdEhhbmRsZX0gZnJvbSAnLi9NZW51TGlzdCc7XG5pbXBvcnQgdHlwZSB7RGlyZWN0aW9uLCBSZWN0fSBmcm9tICcuL3R5cGVzJztcblxudHlwZSBTdGF0ZSA9IHtcbiAgaGlnaGxpZ2h0ZWQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBQcm9wcyA9IHtcbiAgb25JdGVtQ2hvc2VuPzogPyhldmVudDogQ2hvc2VuRXZlbnQpID0+IHZvaWQ7XG4gIG9uTGVmdFB1c2hlZD86ID8oZXZlbnQ6IE1lbnVFdmVudCkgPT4gdm9pZDtcbiAgb25SaWdodFB1c2hlZD86ID8oZXZlbnQ6IE1lbnVFdmVudCkgPT4gdm9pZDtcbiAgb25IaWdobGlnaHRDaGFuZ2U/OiA/KGhpZ2hsaWdodGVkOiBib29sZWFuLCBkZXRhaWxzOiB7YnlLZXlib2FyZDogP2Jvb2xlYW4sIHByZXZDdXJzb3JMb2NhdGlvbjogP1JlY3QsIGRpcmVjdGlvbjogP0RpcmVjdGlvbn0pID0+IHZvaWQ7XG5cbiAgY2xhc3NOYW1lPzogP3N0cmluZztcbiAgc3R5bGU/OiA/T2JqZWN0O1xuICBoaWdobGlnaHRlZENsYXNzTmFtZT86ID9zdHJpbmc7XG4gIGhpZ2hsaWdodGVkU3R5bGU/OiA/T2JqZWN0O1xuXG4gIGluZGV4PzogP251bWJlcjtcbiAgb25Nb3VzZUxlYXZlPzogP0Z1bmN0aW9uO1xuXG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuXG4gICdhcmlhLWhhc3BvcHVwJz86ID9ib29sZWFuO1xuICAnYXJpYS1leHBhbmRlZCc/OiA/Ym9vbGVhbjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1lbnVJdGVtIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFByb3BzLCBTdGF0ZT4ge1xuICBfbWVudUxpc3RIYW5kbGU6IE1lbnVMaXN0SGFuZGxlO1xuICBzdGF0ZSA9IHtcbiAgICBoaWdobGlnaHRlZDogZmFsc2VcbiAgfTtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBvbkl0ZW1DaG9zZW46IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uSGlnaGxpZ2h0Q2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkxlZnRQdXNoZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uUmlnaHRQdXNoZWQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGhpZ2hsaWdodGVkQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGhpZ2hsaWdodGVkU3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG5cbiAgICBpbmRleDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvbk1vdXNlTGVhdmU6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gICAgJ2FyaWEtaGFzcG9wdXAnOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAnYXJpYS1leHBhbmRlZCc6IFByb3BUeXBlcy5ib29sXG4gIH07XG5cbiAgc3RhdGljIGNvbnRleHRUeXBlcyA9IHtcbiAgICBtZW51TGlzdDogUHJvcFR5cGVzLm9iamVjdFxuICB9O1xuXG4gIF9lbDogP0hUTUxFbGVtZW50O1xuICBfZWxTZXR0ZXIgPSAoZWw6ID9IVE1MRWxlbWVudCkgPT4ge1xuICAgIHRoaXMuX2VsID0gZWw7XG4gIH07XG5cbiAgaGFzSGlnaGxpZ2h0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmhpZ2hsaWdodGVkO1xuICB9XG5cbiAgdGFrZUtleWJvYXJkKCkge1xuICAgIHRoaXMuX21lbnVMaXN0SGFuZGxlLnRha2VLZXlib2FyZCgpO1xuICB9XG5cbiAgcmVsZWFzZUtleWJvYXJkKCkge1xuICAgIHRoaXMuX21lbnVMaXN0SGFuZGxlLnJlbGVhc2VLZXlib2FyZCgpO1xuICB9XG5cbiAgbG9ja0hpZ2hsaWdodCgpIHtcbiAgICB0aGlzLl9tZW51TGlzdEhhbmRsZS5sb2NrSGlnaGxpZ2h0KCk7XG4gIH1cblxuICB1bmxvY2tIaWdobGlnaHQoKSB7XG4gICAgdGhpcy5fbWVudUxpc3RIYW5kbGUudW5sb2NrSGlnaGxpZ2h0KCk7XG4gIH1cblxuICAvLyBieUtleWJvYXJkIGZvcmNlcyBmb2N1cyBpbW1lZGlhdGVseSBhbmQgc2Nyb2xscyB0aGUgaXRlbSBpbnRvIHZpZXcuXG4gIC8vIFdpdGggaXQgZmFsc2UsIHRoZSBoaWdobGlnaHQgbWlnaHQgYmUgZGVsYXllZCBkZXBlbmRpbmcgb24gbW91c2UgbW92ZW1lbnRcbiAgLy8gYW5kIHdvbid0IGNhdXNlIGFueXRoaW5nIHRvIHNjcm9sbC5cbiAgaGlnaGxpZ2h0KGJ5S2V5Ym9hcmQ6IGJvb2xlYW49dHJ1ZSkge1xuICAgIHRoaXMuX21lbnVMaXN0SGFuZGxlLmhpZ2hsaWdodChieUtleWJvYXJkKTtcbiAgfVxuXG4gIHVuaGlnaGxpZ2h0KCkge1xuICAgIHRoaXMuX21lbnVMaXN0SGFuZGxlLnVuaGlnaGxpZ2h0KCk7XG4gIH1cblxuICBtb3ZlQ3Vyc29yKGRpcmVjdGlvbjogRGlyZWN0aW9uLCBwcmV2Q3Vyc29yTG9jYXRpb246ID9SZWN0KSB7XG4gICAgdGhpcy5fbWVudUxpc3RIYW5kbGUubW92ZUN1cnNvcihkaXJlY3Rpb24sIHByZXZDdXJzb3JMb2NhdGlvbik7XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBjb25zdCBlbCA9IHRoaXMuX2VsO1xuICAgIC8qOjogaWYgKCFlbCkgdGhyb3cgbmV3IEVycm9yKCk7ICovXG5cbiAgICB0aGlzLl9tZW51TGlzdEhhbmRsZSA9ICh0aGlzLmNvbnRleHQubWVudUxpc3Q6TWVudUxpc3RDb250ZXh0KS5yZWdpc3Rlckl0ZW0odGhpcy5wcm9wcywge1xuICAgICAgbm90aWZ5SGlnaGxpZ2h0ZWQ6IChoaWdobGlnaHRlZDogYm9vbGVhbiwgYnlLZXlib2FyZDogP2Jvb2xlYW4sIGRpcmVjdGlvbjogP0RpcmVjdGlvbiwgcHJldkN1cnNvckxvY2F0aW9uOiA/UmVjdCkgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtoaWdobGlnaHRlZH0sICgpID0+IHtcbiAgICAgICAgICBpZiAoaGlnaGxpZ2h0ZWQgJiYgYnlLZXlib2FyZCkge1xuICAgICAgICAgICAgY29uc3QgZWwgPSB0aGlzLl9lbDtcbiAgICAgICAgICAgIC8qOjogaWYgKCFlbCkgdGhyb3cgbmV3IEVycm9yKCk7ICovXG4gICAgICAgICAgICBpZiAodHlwZW9mIChlbDogYW55KS5zY3JvbGxJbnRvVmlld0lmTmVlZGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIChlbDogYW55KS5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVsLnNjcm9sbEludG9WaWV3KSB7XG4gICAgICAgICAgICAgIGVsLnNjcm9sbEludG9WaWV3KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25IaWdobGlnaHRDaGFuZ2UpIHtcbiAgICAgICAgICB0aGlzLnByb3BzLm9uSGlnaGxpZ2h0Q2hhbmdlKGhpZ2hsaWdodGVkLCB7YnlLZXlib2FyZCwgcHJldkN1cnNvckxvY2F0aW9uLCBkaXJlY3Rpb259KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG5vdGlmeUV2ZW50OiAoZXZlbnQ6IE1lbnVFdmVudCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgICAgY2FzZSAnY2hvc2VuJzpcbiAgICAgICAgICAvKjo6IGlmICghKGV2ZW50IGluc3RhbmNlb2YgQ2hvc2VuRXZlbnQpKSB0aHJvdyBuZXcgRXJyb3IoKTsgKi9cbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkl0ZW1DaG9zZW4pIHRoaXMucHJvcHMub25JdGVtQ2hvc2VuKGV2ZW50KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgaWYgKHRoaXMucHJvcHMub25MZWZ0UHVzaGVkKSB0aGlzLnByb3BzLm9uTGVmdFB1c2hlZChldmVudCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJpZ2h0UHVzaGVkKSB0aGlzLnByb3BzLm9uUmlnaHRQdXNoZWQoZXZlbnQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgZWwpO1xuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5fbWVudUxpc3RIYW5kbGUudW5yZWdpc3RlcigpO1xuICB9XG5cbiAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXdQcm9wczogUHJvcHMpIHtcbiAgICB0aGlzLl9tZW51TGlzdEhhbmRsZS51cGRhdGVQcm9wcyhuZXdQcm9wcyk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2NoaWxkcmVuLCBvbk1vdXNlTGVhdmV9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7aGlnaGxpZ2h0ZWR9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGxldCBzdHlsZSA9IHRoaXMucHJvcHMuc3R5bGU7XG4gICAgbGV0IGNsYXNzTmFtZSA9IHRoaXMucHJvcHMuY2xhc3NOYW1lO1xuICAgIGlmIChoaWdobGlnaHRlZCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMuaGlnaGxpZ2h0ZWRTdHlsZSkge1xuICAgICAgICBzdHlsZSA9IHsuLi5zdHlsZSwgLi4udGhpcy5wcm9wcy5oaWdobGlnaHRlZFN0eWxlfTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnByb3BzLmhpZ2hsaWdodGVkQ2xhc3NOYW1lKSB7XG4gICAgICAgIGNsYXNzTmFtZSA9IGAke2NsYXNzTmFtZXx8Jyd9ICR7dGhpcy5wcm9wcy5oaWdobGlnaHRlZENsYXNzTmFtZX1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIHJlZj17dGhpcy5fZWxTZXR0ZXJ9XG4gICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgIG9uQ2xpY2s9eygpPT50aGlzLl9tZW51TGlzdEhhbmRsZS5pdGVtQ2hvc2VuKCl9XG4gICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gdGhpcy5oaWdobGlnaHQoZmFsc2UpfVxuICAgICAgICBvbk1vdXNlTGVhdmU9e29uTW91c2VMZWF2ZSB8fCAoKCkgPT4gdGhpcy51bmhpZ2hsaWdodCgpKX1cbiAgICAgICAgcm9sZT1cIm1lbnVpdGVtXCJcbiAgICAgICAgYXJpYS1oYXNwb3B1cD17dGhpcy5wcm9wc1snYXJpYS1oYXNwb3B1cCddfVxuICAgICAgICBhcmlhLWV4cGFuZGVkPXt0aGlzLnByb3BzWydhcmlhLWV4cGFuZGVkJ119XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cbiJdfQ==

@@ -448,2 +448,2 @@ 'use strict';

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9NZW51TGlzdC5qcyJdLCJuYW1lcyI6WyJNZW51TGlzdCIsIl9zdG9wcGVyIiwiX2xpc3RJdGVtcyIsIl9lbFNldHRlciIsImVsIiwiX2VsIiwiX2xvY2tlZEhpZ2hsaWdodGVkSW5kZXgiLCJfbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXgiLCJtZW51TGlzdCIsInJlZ2lzdGVySXRlbSIsInByb3BzIiwiY29udHJvbCIsIml0ZW0iLCJyZWdpc3RlciIsImkiLCJpbmRleCIsImNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIiwiX2l0ZW0iLCJOb2RlIiwiRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HIiwicHVzaCIsInNwbGljZSIsIl9rZXlib2FyZFRha2VuQnlJbmRleCIsIm1lbnVMaXN0SGFuZGxlIiwiaGlnaGxpZ2h0IiwiYnlLZXlib2FyZCIsImluZGV4T2YiLCJFcnJvciIsIl9uYXR1cmFsSGlnaGxpZ2h0IiwidW5oaWdobGlnaHQiLCJpdGVtQ2hvc2VuIiwiX2Rpc3BhdGNoRXZlbnQiLCJ0YWtlS2V5Ym9hcmQiLCJyZWxlYXNlS2V5Ym9hcmQiLCJsb2NrSGlnaGxpZ2h0IiwiX2xvY2tIaWdobGlnaHQiLCJ1bmxvY2tIaWdobGlnaHQiLCJtb3ZlQ3Vyc29yIiwiZGlyZWN0aW9uIiwicHJldkN1cnNvckxvY2F0aW9uIiwidXBkYXRlUHJvcHMiLCJuZXdQcm9wcyIsIm9sZEluZGV4IiwiaXNOYXR1cmFsSGlnaGxpZ2h0SW5kZXgiLCJpc0xvY2tlZEhpZ2hsaWdodEluZGV4IiwiaXNLZXlib2FyZFRha2VuQnlJbmRleCIsInVucmVnaXN0ZXIiLCJuZXdJbmRleCIsImNvbnRleHQiLCJtZW51TGlzdEluc3BlY3RvciIsImlzRW50ZXJPckFycm93S2V5IiwiZSIsIndoaWNoIiwibWVyZ2UiLCJmcm9tRXZlbnRzIiwid2luZG93IiwiZmlsdGVyIiwiY29udGFpbnMiLCJ0YXJnZXQiLCJ0YWtlVW50aWxCeSIsIm9uVmFsdWUiLCJfa2V5IiwiZXZlbnQiLCJwYXJlbnRDdHgiLCJfcGFyZW50Q3R4IiwicmVnaXN0ZXJNZW51TGlzdCIsImRlc3Ryb3kiLCJ1bnJlZ2lzdGVyTWVudUxpc3QiLCJ2aXNpYmxlSGlnaGxpZ2h0ZWRJbmRleCIsIl9nZXRWaXNpYmxlSGlnaGxpZ2h0ZWRJbmRleCIsIm5vdGlmeUhpZ2hsaWdodGVkIiwibmV3VmlzaWJsZUhpZ2hsaWdodGVkSW5kZXgiLCJub3RpZnlFdmVudCIsImNhbmNlbEJ1YmJsZSIsInR5cGUiLCJvbkl0ZW1DaG9zZW4iLCJvbkxlZnRQdXNoZWQiLCJvblJpZ2h0UHVzaGVkIiwiZGlzcGF0Y2hFdmVudCIsImxlbmd0aCIsIm1FdmVudCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiZGVmYXVsdFByZXZlbnRlZCIsImNoaWxkcmVuIiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiZnVuYyIsIm5vZGUiLCJjaGlsZENvbnRleHRUeXBlcyIsIm9iamVjdCIsImNvbnRleHRUeXBlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7OztBQUVBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFFQTs7OztBQUNBOzs7Ozs7QUFLQTs7O0FBY0E7OztBQVdBO0FBQ0E7SUFnQnFCQSxROzs7Ozs7Ozs7Ozs7OztnTkFRbkJDLFEsR0FBVyw2QixRQUNYQyxVLEdBR0ssRSxRQVFMQyxTLEdBQVksVUFBQ0MsRUFBRCxFQUFzQjtBQUNoQyxZQUFLQyxHQUFMLEdBQVdELEVBQVg7QUFDRCxLOzs7QUFSRDs7Ozs7a0RBVXVDO0FBQ3JDLGFBQU8sS0FBS0UsdUJBQUwsSUFBZ0MsSUFBaEMsR0FDTCxLQUFLQSx1QkFEQSxHQUMwQixLQUFLQyx3QkFEdEM7QUFFRDs7O3NDQVV5QjtBQUFBOztBQUN4QixVQUFNQyxXQUE0QjtBQUNoQ0Msc0JBQWMsc0JBQUNDLEtBQUQsRUFBUUMsT0FBUixFQUFpQlAsRUFBakIsRUFBd0I7QUFDcEMsY0FBTVEsT0FBTyxFQUFDRixZ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LFVBQUwsQ0FBZ0I2RSxNQUFoQixHQUF1QixDQUFyRyxFQUF3RztBQUN0RyxpQkFBS25ELGlCQUFMLENBQXVCLENBQXZCLEVBQTBCLElBQTFCLEVBQWdDVSxTQUFoQyxFQUEyQ0Msa0JBQTNDO0FBQ0QsV0FGRCxNQUVPO0FBQ0wsaUJBQUtYLGlCQUFMLENBQXVCLEtBQUtyQix3QkFBTCxHQUE4QixDQUFyRCxFQUF3RCxJQUF4RCxFQUE4RCtCLFNBQTlELEVBQXlFQyxrQkFBekU7QUFDRDtBQUNEO0FBZEY7QUFnQkQ7OzttQ0FFdUI7QUFDdEIsYUFBTyxLQUFLOEIsMkJBQUwsTUFBc0MsSUFBN0M7QUFDRDs7OzZCQUVRO0FBQ1AsYUFDRTtBQUFBO0FBQUEsVUFBSyxNQUFLLE1BQVYsRUFBaUIsS0FBSyxLQUFLbEUsU0FBM0I7QUFDRyxhQUFLTyxLQUFMLENBQVcwRTtBQURkLE9BREY7QUFLRDs7O0VBaldtQyxnQkFBTUMsUzs7QUFBdkJyRixRLENBQ1pzRixTLEdBQVk7QUFDakJYLGdCQUFjLG9CQUFVWSxJQURQO0FBRWpCWCxnQkFBYyxvQkFBVVcsSUFGUDtBQUdqQlYsaUJBQWUsb0JBQVVVLElBSFI7QUFJakJILFlBQVUsb0JBQVVJO0FBSkgsQztBQURBeEYsUSxDQTZCWnlGLGlCLEdBQW9CO0FBQ3pCakYsWUFBVSxvQkFBVWtGO0FBREssQztBQTdCUjFGLFEsQ0FpQ1oyRixZLEdBQWU7QUFDcEIxQyxxQkFBbUIsb0JBQVV5QztBQURULEM7a0JBakNIMUYsUSIsImZpbGUiOiJNZW51TGlzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIEBmbG93ICovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7Tm9kZSBhcyBSZWFjdE5vZGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgS2VmaXIgZnJvbSAna2VmaXInO1xuaW1wb3J0IGtlZmlyU3RvcHBlciBmcm9tICdrZWZpci1zdG9wcGVyJztcbmltcG9ydCBmaW5kSW5kZXggZnJvbSAnYXJyYXktZmluZC1pbmRleCc7XG5pbXBvcnQgZnJvbUV2ZW50c0NhcHR1cmUgZnJvbSAnLi9saWIvZnJvbUV2ZW50c0NhcHR1cmUnO1xuXG5pbXBvcnQgTWVudUV2ZW50IGZyb20gJy4vZXZlbnRzL01lbnVFdmVudCc7XG5pbXBvcnQgQ2hvc2VuRXZlbnQgZnJvbSAnLi9ldmVudHMvQ2hvc2VuRXZlbnQnO1xuaW1wb3J0IHR5cGUge1Byb3BzIGFzIE1lbnVJdGVtUHJvcHN9IGZyb20gJy4vTWVudUl0ZW0nO1xuaW1wb3J0IHR5cGUge01lbnVMaXN0SW5zcGVjdG9yQ29udGV4dH0gZnJvbSAnLi9NZW51TGlzdEluc3BlY3Rvcic7XG5pbXBvcnQgdHlwZSB7RGlyZWN0aW9uLCBSZWN0fSBmcm9tICcuL3R5cGVzJztcblxuLy8gVGhpcyB0eXBlIG9mIG9iamVjdCBpcyBnaXZlbiB0byBhIE1lbnVJdGVtIHRvIHRhbGsgdG8gdGhlIE1lbnVMaXN0LlxuZXhwb3J0IHR5cGUgTWVudUxpc3RIYW5kbGUgPSB7XG4gIGhpZ2hsaWdodChieUtleWJvYXJkOiBib29sZWFuKTogdm9pZDtcbiAgdW5oaWdobGlnaHQoKTogdm9pZDtcbiAgbW92ZUN1cnNvcihkaXJlY3Rpb246IERpcmVjdGlvbiwgcHJldkN1cnNvckxvY2F0aW9uOiA/UmVjdCk6IHZvaWQ7XG4gIGl0ZW1DaG9zZW4oKTogdm9pZDtcbiAgdGFrZUtleWJvYXJkKCk6IHZvaWQ7XG4gIHJlbGVhc2VLZXlib2FyZCgpOiB2b2lkO1xuICBsb2NrSGlnaGxpZ2h0KCk6IHZvaWQ7XG4gIHVubG9ja0hpZ2hsaWdodCgpOiB2b2lkO1xuICB1cGRhdGVQcm9wcyhwcm9wczogTWVudUl0ZW1Qcm9wcyk6IHZvaWQ7XG4gIHVucmVnaXN0ZXIoKTogdm9pZDtcbn07XG5cbi8vIFRoaXMgdHlwZSBvZiBvYmplY3QgaXMgZ2l2ZW4gdG8gYSBNZW51TGlzdCB0byB0YWxrIHRvIGEgTWVudUl0ZW0uXG5leHBvcnQgdHlwZSBNZW51SXRlbUNvbnRyb2wgPSB7XG4gIG5vdGlmeUhpZ2hsaWdodGVkKFxuICAgIGhpZ2hsaWdodGVkOiBib29sZWFuLFxuICAgIGJ5S2V5Ym9hcmQ6ID9ib29sZWFuLFxuICAgIGRpcmVjdGlvbjogP0RpcmVjdGlvbixcbiAgICBwcmV2Q3Vyc29yTG9jYXRpb246ID9SZWN0XG4gICk6IHZvaWQ7XG4gIG5vdGlmeUV2ZW50KGV2ZW50OiBNZW51RXZlbnQpOiB2b2lkO1xufTtcblxuLy8gVGhpcyBpcyB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0IHRoYXQgTWVudUxpc3QgZ2l2ZXMgYXMgY29udGV4dCB0byBpdHNcbi8vIGRlc2NlbmRhbnRzLlxuZXhwb3J0IHR5cGUgTWVudUxpc3RDb250ZXh0ID0ge1xuICByZWdpc3Rlckl0ZW0oXG4gICAgcHJvcHM6IE1lbnVJdGVtUHJvcHMsXG4gICAgY29udHJvbDogTWVudUl0ZW1Db250cm9sLFxuICAgIGVsOiBIVE1MRWxlbWVudFxuICApOiBNZW51TGlzdEhhbmRsZTtcbn07XG5cbmV4cG9ydCB0eXBlIFByb3BzID0ge1xuICBvbkl0ZW1DaG9zZW4/OiA/KGV2ZW50OiBDaG9zZW5FdmVudCkgPT4gdm9pZDtcbiAgb25MZWZ0UHVzaGVkPzogPyhldmVudDogTWVudUV2ZW50KSA9PiB2b2lkO1xuICBvblJpZ2h0UHVzaGVkPzogPyhldmVudDogTWVudUV2ZW50KSA9PiB2b2lkO1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1lbnVMaXN0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFByb3BzPiB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgb25JdGVtQ2hvc2VuOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkxlZnRQdXNoZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uUmlnaHRQdXNoZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZVxuICB9O1xuXG4gIF9zdG9wcGVyID0ga2VmaXJTdG9wcGVyKCk7XG4gIF9saXN0SXRlbXM6IEFycmF5PHtcbiAgICBwcm9wczogTWVudUl0ZW1Qcm9wcztcbiAgICBjb250cm9sOiBNZW51SXRlbUNvbnRyb2w7XG4gIH0+ID0gW107XG5cbiAgLy8gVGhlIG5hdHVyYWwgaGlnaGxpZ2h0IGlzIHdoZXJlIHRoZSBoaWdobGlnaHQgd291bGQgYmUgaWYgbm8gbG9jayBpcyBhY3RpdmUuXG4gIF9uYXR1cmFsSGlnaGxpZ2h0ZWRJbmRleDogP251bWJlcjtcbiAgX2xvY2tlZEhpZ2hsaWdodGVkSW5kZXg6ID9udW1iZXI7XG4gIF9rZXlib2FyZFRha2VuQnlJbmRleDogP251bWJlcjtcblxuICBfZWw6ID9IVE1MRWxlbWVudDtcbiAgX2VsU2V0dGVyID0gKGVsOiA/SFRNTEVsZW1lbnQpID0+IHtcbiAgICB0aGlzLl9lbCA9IGVsO1xuICB9O1xuXG4gIF9nZXRWaXNpYmxlSGlnaGxpZ2h0ZWRJbmRleCgpOiA/bnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbG9ja2VkSGlnaGxpZ2h0ZWRJbmRleCAhPSBudWxsID9cbiAgICAgIHRoaXMuX2xvY2tlZEhpZ2hsaWdodGVkSW5kZXggOiB0aGlzLl9uYXR1cmFsSGlnaGxpZ2h0ZWRJbmRleDtcbiAgfVxuXG4gIHN0YXRpYyBjaGlsZENvbnRleHRUeXBlcyA9IHtcbiAgICBtZW51TGlzdDogUHJvcFR5cGVzLm9iamVjdFxuICB9O1xuXG4gIHN0YXRpYyBjb250ZXh0VHlwZXMgPSB7XG4gICAgbWVudUxpc3RJbnNwZWN0b3I6IFByb3BUeXBlcy5vYmplY3RcbiAgfTtcblxuICBnZXRDaGlsZENvbnRleHQoKTogT2JqZWN0IHtcbiAgICBjb25zdCBtZW51TGlzdDogTWVudUxpc3RDb250ZXh0ID0ge1xuICAgICAgcmVnaXN0ZXJJdGVtOiAocHJvcHMsIGNvbnRyb2wsIGVsKSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB7cHJvcHMsIGNvbnRyb2wsIGVsfTtcblxuICAgICAgICBjb25zdCByZWdpc3RlciA9ICgpID0+IHtcbiAgICAgICAgICBsZXQgaSA9IC0xO1xuICAgICAgICAgIGlmIChpdGVtLnByb3BzLmluZGV4ID09IG51bGwpIHtcbiAgICAgICAgICAgIGkgPSBmaW5kSW5kZXgoXG4gICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtcyxcbiAgICAgICAgICAgICAgX2l0ZW0gPT5cbiAgICAgICAgICAgICAgICAoaXRlbS5lbC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihfaXRlbS5lbCkmTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkcpID09PSAwXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpID0gZmluZEluZGV4KFxuICAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbXMsXG4gICAgICAgICAgICAgIF9pdGVtID0+IF9pdGVtLnByb3BzLmluZGV4ICE9IG51bGwgJiYgaXRlbS5wcm9wcy5pbmRleCA8IF9pdGVtLnByb3BzLmluZGV4XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaSA8IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9saXN0SXRlbXMuc3BsaWNlKGksIDAsIGl0ZW0pO1xuICAgICAgICAgICAgaWYgKHRoaXMuX25hdHVyYWxIaWdobGlnaHRlZEluZGV4ICE9IG51bGwgJiYgaSA8PSB0aGlzLl9uYXR1cmFsSGlnaGxpZ2h0ZWRJbmRleCkge1xuICAgICAgICAgICAgICB0aGlzLl9uYXR1cmFsSGlnaGxpZ2h0ZWRJbmRleCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuX2xvY2tlZEhpZ2hsaWdodGVkSW5kZXggIT0gbnVsbCAmJiBpIDw9IHRoaXMuX2xvY2tlZEhpZ2hsaWdodGVkSW5kZXgpIHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9ja2VkSGlnaGxpZ2h0ZWRJbmRleCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuX2tleWJvYXJkVGFrZW5CeUluZGV4ICE9IG51bGwgJiYgaSA8PSB0aGlzLl9rZXlib2FyZFRha2VuQnlJbmRleCkge1xuICAgICAgICAgICAgICB0aGlzLl9rZXlib2FyZFRha2VuQnlJbmRleCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICByZWdpc3RlcigpO1xuXG4gICAgICAgIGNvbnN0IG1lbnVMaXN0SGFuZGxlOiBNZW51TGlzdEhhbmRsZSA9IHtcbiAgICAgICAgICBoaWdobGlnaHQ6IChieUtleWJvYXJkOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpID0gdGhpcy5fbGlzdEl0ZW1zLmluZGV4T2YoaXRlbSk7XG4gICAgICAgICAgICBpZiAoaSA8IDApIHRocm93IG5ldyBFcnJvcignQWxyZWFkeSB1bnJlZ2lzdGVyZWQgTWVudUl0ZW0nKTtcbiAgICAgICAgICAgIHRoaXMuX25hdHVyYWxIaWdobGlnaHQoaSwgYnlLZXlib2FyZCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB1bmhpZ2hsaWdodDogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaSA9IHRoaXMuX2xpc3RJdGVtcy5pbmRleE9mKGl0ZW0pO1xuICAgICAgICAgICAgaWYgKGkgPCAwKSB0aHJvdyBuZXcgRXJyb3IoJ0FscmVhZHkgdW5yZWdpc3RlcmVkIE1lbnVJdGVtJyk7XG4gICAgICAgICAgICBpZiAodGhpcy5fbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXggPT09IGkpIHtcbiAgICAgICAgICAgICAgdGhpcy5fbmF0dXJhbEhpZ2hsaWdodChudWxsLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBpdGVtQ2hvc2VuOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9kaXNwYXRjaEV2ZW50KGNvbnRyb2wsIG5ldyBDaG9zZW5FdmVudCgnY2hvc2VuJywgZmFsc2UpKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRha2VLZXlib2FyZDogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaSA9IHRoaXMuX2xpc3RJdGVtcy5pbmRleE9mKGl0ZW0pO1xuICAgICAgICAgICAgaWYgKGkgPCAwKSB0aHJvdyBuZXcgRXJyb3IoJ0FscmVhZHkgdW5yZWdpc3RlcmVkIE1lbnVJdGVtJyk7XG4gICAgICAgICAgICB0aGlzLl9rZXlib2FyZFRha2VuQnlJbmRleCA9IGk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZWxlYXNlS2V5Ym9hcmQ6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLl9saXN0SXRlbXMuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgICAgIGlmIChpIDwgMCkgdGhyb3cgbmV3IEVycm9yKCdBbHJlYWR5IHVucmVnaXN0ZXJlZCBNZW51SXRlbScpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2tleWJvYXJkVGFrZW5CeUluZGV4ID09PSBpKSB7XG4gICAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkVGFrZW5CeUluZGV4ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGxvY2tIaWdobGlnaHQ6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLl9saXN0SXRlbXMuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgICAgIGlmIChpIDwgMCkgdGhyb3cgbmV3IEVycm9yKCdBbHJlYWR5IHVucmVnaXN0ZXJlZCBNZW51SXRlbScpO1xuICAgICAgICAgICAgdGhpcy5fbG9ja0hpZ2hsaWdodChpKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHVubG9ja0hpZ2hsaWdodDogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaSA9IHRoaXMuX2xpc3RJdGVtcy5pbmRleE9mKGl0ZW0pO1xuICAgICAgICAgICAgaWYgKGkgPCAwKSB0aHJvdyBuZXcgRXJyb3IoJ0FscmVhZHkgdW5yZWdpc3RlcmVkIE1lbnVJdGVtJyk7XG4gICAgICAgICAgICBpZiAodGhpcy5fbG9ja2VkSGlnaGxpZ2h0ZWRJbmRleCA9PT0gaSkge1xuICAgICAgICAgICAgICB0aGlzLl9sb2NrSGlnaGxpZ2h0KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbW92ZUN1cnNvcjogKGRpcmVjdGlvbjogRGlyZWN0aW9uLCBwcmV2Q3Vyc29yTG9jYXRpb246ID9SZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1vdmVDdXJzb3IoZGlyZWN0aW9uLCBwcmV2Q3Vyc29yTG9jYXRpb24pO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdXBkYXRlUHJvcHM6IChuZXdQcm9wczogTWVudUl0ZW1Qcm9wcykgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0ucHJvcHMuaW5kZXggIT09IG5ld1Byb3BzLmluZGV4KSB7XG4gICAgICAgICAgICAgIGNvbnN0IG9sZEluZGV4ID0gdGhpcy5fbGlzdEl0ZW1zLmluZGV4T2YoaXRlbSk7XG4gICAgICAgICAgICAgIGNvbnN0IGlzTmF0dXJhbEhpZ2hsaWdodEluZGV4ID0gdGhpcy5fbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXggPT09IG9sZEluZGV4O1xuICAgICAgICAgICAgICBjb25zdCBpc0xvY2tlZEhpZ2hsaWdodEluZGV4ID0gdGhpcy5fbG9ja2VkSGlnaGxpZ2h0ZWRJbmRleCA9PT0gb2xkSW5kZXg7XG4gICAgICAgICAgICAgIGNvbnN0IGlzS2V5Ym9hcmRUYWtlbkJ5SW5kZXggPSB0aGlzLl9rZXlib2FyZFRha2VuQnlJbmRleCA9PT0gb2xkSW5kZXg7XG5cbiAgICAgICAgICAgICAgbWVudUxpc3RIYW5kbGUudW5yZWdpc3RlcigpO1xuICAgICAgICAgICAgICBwcm9wcyA9IG5ld1Byb3BzO1xuICAgICAgICAgICAgICBpdGVtLnByb3BzID0gbmV3UHJvcHM7XG4gICAgICAgICAgICAgIHJlZ2lzdGVyKCk7XG5cbiAgICAgICAgICAgICAgaWYgKGlzTmF0dXJhbEhpZ2hsaWdodEluZGV4IHx8IGlzTG9ja2VkSGlnaGxpZ2h0SW5kZXggfHwgaXNLZXlib2FyZFRha2VuQnlJbmRleCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0luZGV4ID0gdGhpcy5fbGlzdEl0ZW1zLmluZGV4T2YoaXRlbSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzTmF0dXJhbEhpZ2hsaWdodEluZGV4KSB0aGlzLl9uYXR1cmFsSGlnaGxpZ2h0ZWRJbmRleCA9IG5ld0luZGV4O1xuICAgICAgICAgICAgICAgIGlmIChpc0xvY2tlZEhpZ2hsaWdodEluZGV4KSB0aGlzLl9sb2NrZWRIaWdobGlnaHRlZEluZGV4ID0gbmV3SW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKGlzS2V5Ym9hcmRUYWtlbkJ5SW5kZXgpIHRoaXMuX2tleWJvYXJkVGFrZW5CeUluZGV4ID0gbmV3SW5kZXg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHByb3BzID0gbmV3UHJvcHM7XG4gICAgICAgICAgICAgIGl0ZW0ucHJvcHMgPSBuZXdQcm9wcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHVucmVnaXN0ZXI6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLl9saXN0SXRlbXMuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgICAgIGlmIChpIDwgMCkgdGhyb3cgbmV3IEVycm9yKCdBbHJlYWR5IHVucmVnaXN0ZXJlZCBNZW51SXRlbScpO1xuICAgICAgICAgICAgaWYgKGkgPT09IHRoaXMuX25hdHVyYWxIaWdobGlnaHRlZEluZGV4KSB7XG4gICAgICAgICAgICAgIHRoaXMuX25hdHVyYWxIaWdobGlnaHRlZEluZGV4ID0gbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXggIT0gbnVsbCAmJiBpIDwgdGhpcy5fbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXgpIHtcbiAgICAgICAgICAgICAgdGhpcy5fbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXgtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpID09PSB0aGlzLl9sb2NrZWRIaWdobGlnaHRlZEluZGV4KSB7XG4gICAgICAgICAgICAgIHRoaXMuX2xvY2tlZEhpZ2hsaWdodGVkSW5kZXggPSBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9sb2NrZWRIaWdobGlnaHRlZEluZGV4ICE9IG51bGwgJiYgaSA8IHRoaXMuX2xvY2tlZEhpZ2hsaWdodGVkSW5kZXgpIHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9ja2VkSGlnaGxpZ2h0ZWRJbmRleC0tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGkgPT09IHRoaXMuX2tleWJvYXJkVGFrZW5CeUluZGV4KSB7XG4gICAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkVGFrZW5CeUluZGV4ID0gbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fa2V5Ym9hcmRUYWtlbkJ5SW5kZXggIT0gbnVsbCAmJiBpIDwgdGhpcy5fa2V5Ym9hcmRUYWtlbkJ5SW5kZXgpIHtcbiAgICAgICAgICAgICAgdGhpcy5fa2V5Ym9hcmRUYWtlbkJ5SW5kZXgtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbWVudUxpc3RIYW5kbGU7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4ge21lbnVMaXN0fTtcbiAgfVxuXG4gIF9wYXJlbnRDdHgoKTogP01lbnVMaXN0SW5zcGVjdG9yQ29udGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5tZW51TGlzdEluc3BlY3RvcjtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGNvbnN0IGlzRW50ZXJPckFycm93S2V5ID0gZSA9PlxuICAgICAgKGUud2hpY2ggPT09IDEzKSB8fCAoMzcgPD0gZS53aGljaCAmJiBlLndoaWNoIDw9IDQwKTtcbiAgICBjb25zdCBlbCA9IHRoaXMuX2VsO1xuICAgIC8qOjogaWYgKCFlbCkgdGhyb3cgbmV3IEVycm9yKCk7ICovXG5cbiAgICAvLyBUaGUgb25seSB0aGluZ3MgdGhhdCBzaG91bGQgcmVjZWl2ZSBrZXlkb3duL2tleXByZXNzIGV2ZW50cyBiZWZvcmUgdXNcbiAgICAvLyBhcmUgb3VyIGNoaWxkcmVuLiBUaGlzIGFsbG93cyBhIE1lbnVJdGVtIHRvIGNvbnRhaW4gYSB0ZXh0IGlucHV0XG4gICAgLy8gd2hpY2ggc2VsZWN0aXZlbHkgc3RvcHMgcHJvcGFnYXRpb24gb24ga2V5IGV2ZW50cyBmb3IgZXhhbXBsZS5cbiAgICBLZWZpci5tZXJnZShbXG4gICAgICBLZWZpci5mcm9tRXZlbnRzKHdpbmRvdywgJ2tleWRvd24nKS5maWx0ZXIoaXNFbnRlck9yQXJyb3dLZXkpXG4gICAgICAgIC5maWx0ZXIoZSA9PiBlbC5jb250YWlucyhlLnRhcmdldCkpLFxuICAgICAgZnJvbUV2ZW50c0NhcHR1cmUod2luZG93LCAna2V5ZG93bicpLmZpbHRlcihpc0VudGVyT3JBcnJvd0tleSlcbiAgICAgICAgLmZpbHRlcihlID0+ICFlbC5jb250YWlucyhlLnRhcmdldCkpXG4gICAgXSlcbiAgICAgIC50YWtlVW50aWxCeSh0aGlzLl9zdG9wcGVyKVxuICAgICAgLm9uVmFsdWUoZXZlbnQgPT4gdGhpcy5fa2V5KGV2ZW50KSk7XG5cbiAgICBjb25zdCBwYXJlbnRDdHggPSB0aGlzLl9wYXJlbnRDdHgoKTtcbiAgICBpZiAocGFyZW50Q3R4KSB7XG4gICAgICBwYXJlbnRDdHgucmVnaXN0ZXJNZW51TGlzdCh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLl9zdG9wcGVyLmRlc3Ryb3koKTtcblxuICAgIGNvbnN0IHBhcmVudEN0eCA9IHRoaXMuX3BhcmVudEN0eCgpO1xuICAgIGlmIChwYXJlbnRDdHgpIHtcbiAgICAgIHBhcmVudEN0eC51bnJlZ2lzdGVyTWVudUxpc3QodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgX25hdHVyYWxIaWdobGlnaHQoaW5kZXg6ID9udW1iZXIsIGJ5S2V5Ym9hcmQ6IGJvb2xlYW4sIGRpcmVjdGlvbjogP0RpcmVjdGlvbiwgcHJldkN1cnNvckxvY2F0aW9uOiA/UmVjdCkge1xuICAgIGNvbnN0IHZpc2libGVIaWdobGlnaHRlZEluZGV4ID0gdGhpcy5fZ2V0VmlzaWJsZUhpZ2hsaWdodGVkSW5kZXgoKTtcblxuICAgIGlmICh0aGlzLl9sb2NrZWRIaWdobGlnaHRlZEluZGV4ICE9IG51bGwgJiYgYnlLZXlib2FyZCkge1xuICAgICAgdGhpcy5fbG9ja2VkSGlnaGxpZ2h0ZWRJbmRleCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuX25hdHVyYWxIaWdobGlnaHRlZEluZGV4ID0gaW5kZXg7XG4gICAgaWYgKHRoaXMuX2xvY2tlZEhpZ2hsaWdodGVkSW5kZXggPT0gbnVsbCkge1xuICAgICAgaWYgKGluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5fbGlzdEl0ZW1zW2luZGV4XS5jb250cm9sLm5vdGlmeUhpZ2hsaWdodGVkKHRydWUsIGJ5S2V5Ym9hcmQsIGRpcmVjdGlvbiwgcHJldkN1cnNvckxvY2F0aW9uKTtcbiAgICAgIH1cbiAgICAgIGlmICh2aXNpYmxlSGlnaGxpZ2h0ZWRJbmRleCAhPSBudWxsICYmIHZpc2libGVIaWdobGlnaHRlZEluZGV4ICE9IGluZGV4KSB7XG4gICAgICAgIHRoaXMuX2xpc3RJdGVtc1t2aXNpYmxlSGlnaGxpZ2h0ZWRJbmRleF0uY29udHJvbC5ub3RpZnlIaWdobGlnaHRlZChmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX2xvY2tIaWdobGlnaHQoaW5kZXg6ID9udW1iZXIpIHtcbiAgICBpZiAoaW5kZXggPT09IHRoaXMuX2xvY2tlZEhpZ2hsaWdodGVkSW5kZXgpIHJldHVybjtcbiAgICBjb25zdCB2aXNpYmxlSGlnaGxpZ2h0ZWRJbmRleCA9IHRoaXMuX2dldFZpc2libGVIaWdobGlnaHRlZEluZGV4KCk7XG4gICAgdGhpcy5fbG9ja2VkSGlnaGxpZ2h0ZWRJbmRleCA9IGluZGV4O1xuICAgIGNvbnN0IG5ld1Zpc2libGVIaWdobGlnaHRlZEluZGV4ID0gdGhpcy5fZ2V0VmlzaWJsZUhpZ2hsaWdodGVkSW5kZXgoKTtcbiAgICBpZiAodmlzaWJsZUhpZ2hsaWdodGVkSW5kZXggIT0gbnVsbCAmJiBuZXdWaXNpYmxlSGlnaGxpZ2h0ZWRJbmRleCA9PSBudWxsKSB7XG4gICAgICAvLyBXaGVuIHVubG9ja2luZywgcHJlZmVyIHRvIGtlZXAgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIG92ZXIgZGUtc2VsZWN0aW5nXG4gICAgICAvLyBldmVyeXRoaW5nLlxuICAgICAgdGhpcy5fbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXggPSB2aXNpYmxlSGlnaGxpZ2h0ZWRJbmRleDtcbiAgICB9IGVsc2UgaWYgKHZpc2libGVIaWdobGlnaHRlZEluZGV4ICE9IG5ld1Zpc2libGVIaWdobGlnaHRlZEluZGV4KSB7XG4gICAgICBpZiAodmlzaWJsZUhpZ2hsaWdodGVkSW5kZXggIT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9saXN0SXRlbXNbdmlzaWJsZUhpZ2hsaWdodGVkSW5kZXhdLmNvbnRyb2wubm90aWZ5SGlnaGxpZ2h0ZWQoZmFsc2UpO1xuICAgICAgfVxuICAgICAgaWYgKG5ld1Zpc2libGVIaWdobGlnaHRlZEluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5fbGlzdEl0ZW1zW25ld1Zpc2libGVIaWdobGlnaHRlZEluZGV4XS5jb250cm9sLm5vdGlmeUhpZ2hsaWdodGVkKHRydWUsIGZhbHNlKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXggIT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9saXN0SXRlbXNbdGhpcy5fbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXhdLmNvbnRyb2wubm90aWZ5SGlnaGxpZ2h0ZWQodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9kaXNwYXRjaEV2ZW50KGNvbnRyb2w6ID9NZW51SXRlbUNvbnRyb2wsIGV2ZW50OiBNZW51RXZlbnQpIHtcbiAgICBpZiAoY29udHJvbCkge1xuICAgICAgY29udHJvbC5ub3RpZnlFdmVudChldmVudCk7XG4gICAgICBpZiAoZXZlbnQuY2FuY2VsQnViYmxlKSByZXR1cm47XG4gICAgfVxuICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgIGNhc2UgJ2Nob3Nlbic6XG4gICAgICAvKjo6IGlmICghKGV2ZW50IGluc3RhbmNlb2YgQ2hvc2VuRXZlbnQpKSB0aHJvdyBuZXcgRXJyb3IoKTsgKi9cbiAgICAgIGlmICh0aGlzLnByb3BzLm9uSXRlbUNob3NlbikgdGhpcy5wcm9wcy5vbkl0ZW1DaG9zZW4oZXZlbnQpO1xuICAgICAgYnJlYWs7XG4gICAgLy8gY2FzZSAndXAnOlxuICAgIC8vICAgYnJlYWs7XG4gICAgLy8gY2FzZSAnZG93bic6XG4gICAgLy8gICBicmVhaztcbiAgICBjYXNlICdsZWZ0JzpcbiAgICAgIGlmICh0aGlzLnByb3BzLm9uTGVmdFB1c2hlZCkgdGhpcy5wcm9wcy5vbkxlZnRQdXNoZWQoZXZlbnQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgaWYgKHRoaXMucHJvcHMub25SaWdodFB1c2hlZCkgdGhpcy5wcm9wcy5vblJpZ2h0UHVzaGVkKGV2ZW50KTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAoZXZlbnQuY2FuY2VsQnViYmxlKSByZXR1cm47XG4gICAgY29uc3QgcGFyZW50Q3R4ID0gdGhpcy5fcGFyZW50Q3R4KCk7XG4gICAgaWYgKHBhcmVudEN0eCkge1xuICAgICAgcGFyZW50Q3R4LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIF9rZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5fa2V5Ym9hcmRUYWtlbkJ5SW5kZXggIT0gbnVsbCB8fCB0aGlzLl9saXN0SXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmlzaWJsZUhpZ2hsaWdodGVkSW5kZXggPSB0aGlzLl9nZXRWaXNpYmxlSGlnaGxpZ2h0ZWRJbmRleCgpO1xuXG4gICAgLy8gZW50ZXIsIGxlZnQsIHJpZ2h0IGFjdGl2YXRlIGZvciB0aGUgY3VycmVudCB2aXNpYmx5IHNlbGVjdGVkIGl0ZW0uXG4gICAgLy8gdXAgYW5kIGRvd24gZGUtYWN0aXZhdGUgYW55IGxvY2tzIGluIHBsYWNlLCBzbyB0aGF0IHRoZXkgYWN0IGZyb20gdGhlIGxhc3RcbiAgICAvLyBuYXR1cmFsbHktc2VsZWN0ZWQgaXRlbS5cblxuICAgIGxldCBtRXZlbnQgPSBudWxsO1xuXG4gICAgc3dpdGNoIChldmVudC53aGljaCkge1xuICAgIGNhc2UgMTM6IC8vZW50ZXJcbiAgICAgIGlmICh2aXNpYmxlSGlnaGxpZ2h0ZWRJbmRleCAhPSBudWxsKSB7XG4gICAgICAgIG1FdmVudCA9IG5ldyBDaG9zZW5FdmVudCgnY2hvc2VuJywgdHJ1ZSk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAzNzogLy9sZWZ0XG4gICAgICBpZiAodmlzaWJsZUhpZ2hsaWdodGVkSW5kZXggIT0gbnVsbCkge1xuICAgICAgICBtRXZlbnQgPSBuZXcgTWVudUV2ZW50KCdsZWZ0Jyk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDM5OiAvL3JpZ2h0XG4gICAgICBpZiAodmlzaWJsZUhpZ2hsaWdodGVkSW5kZXggIT0gbnVsbCkge1xuICAgICAgICBtRXZlbnQgPSBuZXcgTWVudUV2ZW50KCdyaWdodCcpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAzODogLy91cFxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy5tb3ZlQ3Vyc29yKCd1cCcpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA0MDogLy9kb3duXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLm1vdmVDdXJzb3IoJ2Rvd24nKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChtRXZlbnQpIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB2aXNpYmxlSGlnaGxpZ2h0ZWRJbmRleCA9PSBudWxsID8gbnVsbCA6XG4gICAgICAgIHRoaXMuX2xpc3RJdGVtc1t2aXNpYmxlSGlnaGxpZ2h0ZWRJbmRleF0uY29udHJvbDtcbiAgICAgIHRoaXMuX2Rpc3BhdGNoRXZlbnQoY29udHJvbCwgbUV2ZW50KTtcbiAgICAgIGlmIChtRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmIChtRXZlbnQuZGVmYXVsdFByZXZlbnRlZCB8fCBtRXZlbnQuY2FuY2VsQnViYmxlKSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBtb3ZlQ3Vyc29yKGRpcmVjdGlvbjogRGlyZWN0aW9uLCBwcmV2Q3Vyc29yTG9jYXRpb246ID9SZWN0KSB7XG4gICAgaWYgKHRoaXMuX2xpc3RJdGVtcy5sZW5ndGggPT0gMCkgcmV0dXJuO1xuXG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICBjYXNlICd1cCc6XG4gICAgICBpZiAodGhpcy5fbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXggPT0gbnVsbCB8fCB0aGlzLl9uYXR1cmFsSGlnaGxpZ2h0ZWRJbmRleCA9PSAwKSB7XG4gICAgICAgIHRoaXMuX25hdHVyYWxIaWdobGlnaHQodGhpcy5fbGlzdEl0ZW1zLmxlbmd0aC0xLCB0cnVlLCBkaXJlY3Rpb24sIHByZXZDdXJzb3JMb2NhdGlvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9uYXR1cmFsSGlnaGxpZ2h0KHRoaXMuX25hdHVyYWxIaWdobGlnaHRlZEluZGV4LTEsIHRydWUsIGRpcmVjdGlvbiwgcHJldkN1cnNvckxvY2F0aW9uKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgaWYgKHRoaXMuX25hdHVyYWxIaWdobGlnaHRlZEluZGV4ID09IG51bGwgfHwgdGhpcy5fbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXggPT0gdGhpcy5fbGlzdEl0ZW1zLmxlbmd0aC0xKSB7XG4gICAgICAgIHRoaXMuX25hdHVyYWxIaWdobGlnaHQoMCwgdHJ1ZSwgZGlyZWN0aW9uLCBwcmV2Q3Vyc29yTG9jYXRpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fbmF0dXJhbEhpZ2hsaWdodCh0aGlzLl9uYXR1cmFsSGlnaGxpZ2h0ZWRJbmRleCsxLCB0cnVlLCBkaXJlY3Rpb24sIHByZXZDdXJzb3JMb2NhdGlvbik7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBoYXNIaWdobGlnaHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFZpc2libGVIaWdobGlnaHRlZEluZGV4KCkgIT0gbnVsbDtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiByb2xlPVwibWVudVwiIHJlZj17dGhpcy5fZWxTZXR0ZXJ9PlxuICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9NZW51TGlzdC5qcyJdLCJuYW1lcyI6WyJNZW51TGlzdCIsIl9zdG9wcGVyIiwiX2xpc3RJdGVtcyIsIl9lbFNldHRlciIsImVsIiwiX2VsIiwiX2xvY2tlZEhpZ2hsaWdodGVkSW5kZXgiLCJfbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXgiLCJtZW51TGlzdCIsInJlZ2lzdGVySXRlbSIsInByb3BzIiwiY29udHJvbCIsIml0ZW0iLCJyZWdpc3RlciIsImkiLCJpbmRleCIsImNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIiwiX2l0ZW0iLCJOb2RlIiwiRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HIiwicHVzaCIsInNwbGljZSIsIl9rZXlib2FyZFRha2VuQnlJbmRleCIsIm1lbnVMaXN0SGFuZGxlIiwiaGlnaGxpZ2h0IiwiYnlLZXlib2FyZCIsImluZGV4T2YiLCJFcnJvciIsIl9uYXR1cmFsSGlnaGxpZ2h0IiwidW5oaWdobGlnaHQiLCJpdGVtQ2hvc2VuIiwiX2Rpc3BhdGNoRXZlbnQiLCJDaG9zZW5FdmVudCIsInRha2VLZXlib2FyZCIsInJlbGVhc2VLZXlib2FyZCIsImxvY2tIaWdobGlnaHQiLCJfbG9ja0hpZ2hsaWdodCIsInVubG9ja0hpZ2hsaWdodCIsIm1vdmVDdXJzb3IiLCJkaXJlY3Rpb24iLCJwcmV2Q3Vyc29yTG9jYXRpb24iLCJ1cGRhdGVQcm9wcyIsIm5ld1Byb3BzIiwib2xkSW5kZXgiLCJpc05hdHVyYWxIaWdobGlnaHRJbmRleCIsImlzTG9ja2VkSGlnaGxpZ2h0SW5kZXgiLCJpc0tleWJvYXJkVGFrZW5CeUluZGV4IiwidW5yZWdpc3RlciIsIm5ld0luZGV4IiwiY29udGV4dCIsIm1lbnVMaXN0SW5zcGVjdG9yIiwiaXNFbnRlck9yQXJyb3dLZXkiLCJlIiwid2hpY2giLCJLZWZpciIsIm1lcmdlIiwiZnJvbUV2ZW50cyIsIndpbmRvdyIsImZpbHRlciIsImNvbnRhaW5zIiwidGFyZ2V0IiwidGFrZVVudGlsQnkiLCJvblZhbHVlIiwiX2tleSIsImV2ZW50IiwicGFyZW50Q3R4IiwiX3BhcmVudEN0eCIsInJlZ2lzdGVyTWVudUxpc3QiLCJkZXN0cm95IiwidW5yZWdpc3Rlck1lbnVMaXN0IiwidmlzaWJsZUhpZ2hsaWdodGVkSW5kZXgiLCJfZ2V0VmlzaWJsZUhpZ2hsaWdodGVkSW5kZXgiLCJub3RpZnlIaWdobGlnaHRlZCIsIm5ld1Zpc2libGVIaWdobGlnaHRlZEluZGV4Iiwibm90aWZ5RXZlbnQiLCJjYW5jZWxCdWJibGUiLCJ0eXBlIiwib25JdGVtQ2hvc2VuIiwib25MZWZ0UHVzaGVkIiwib25SaWdodFB1c2hlZCIsImRpc3BhdGNoRXZlbnQiLCJsZW5ndGgiLCJtRXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsIk1lbnVFdmVudCIsImRlZmF1bHRQcmV2ZW50ZWQiLCJjaGlsZHJlbiIsIlJlYWN0IiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiZnVuYyIsIm5vZGUiLCJjaGlsZENvbnRleHRUeXBlcyIsIm9iamVjdCIsImNvbnRleHRUeXBlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7OztBQUVBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFFQTs7OztBQUNBOzs7Ozs7QUFLQTs7O0FBY0E7OztBQVdBO0FBQ0E7SUFnQnFCQSxROzs7Ozs7Ozs7Ozs7OztnTkFRbkJDLFEsR0FBVyw2QixRQUNYQyxVLEdBR0ssRSxRQVFMQyxTLEdBQVksVUFBQ0MsRUFBRCxFQUFzQjtBQUNoQyxZQUFLQyxHQUFMLEdBQVdELEVBQVg7QUFDRCxLOzs7QUFSRDs7Ozs7a0RBVXVDO0FBQ3JDLGFBQU8sS0FBS0UsdUJBQUwsSUFBZ0MsSUFBaEMsR0FDTCxLQUFLQSx1QkFEQSxHQUMwQixLQUFLQyx3QkFEdEM7QUFFRDs7O3NDQVV5QjtBQUFBOztBQUN4QixVQUFNQyxXQUE0QjtBQUNoQ0Msc0JBQWMsc0JBQUNDLEtBQUQs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QXlFQyxrQkFBekU7QUFDRDtBQUNEO0FBQ0YsYUFBSyxNQUFMO0FBQ0UsY0FBSSxLQUFLakMsd0JBQUwsSUFBaUMsSUFBakMsSUFBeUMsS0FBS0Esd0JBQUwsSUFBaUMsS0FBS0wsVUFBTCxDQUFnQitFLE1BQWhCLEdBQXVCLENBQXJHLEVBQXdHO0FBQ3RHLGlCQUFLckQsaUJBQUwsQ0FBdUIsQ0FBdkIsRUFBMEIsSUFBMUIsRUFBZ0NXLFNBQWhDLEVBQTJDQyxrQkFBM0M7QUFDRCxXQUZELE1BRU87QUFDTCxpQkFBS1osaUJBQUwsQ0FBdUIsS0FBS3JCLHdCQUFMLEdBQThCLENBQXJELEVBQXdELElBQXhELEVBQThEZ0MsU0FBOUQsRUFBeUVDLGtCQUF6RTtBQUNEO0FBQ0Q7QUFkRjtBQWdCRDs7O21DQUV1QjtBQUN0QixhQUFPLEtBQUsrQiwyQkFBTCxNQUFzQyxJQUE3QztBQUNEOzs7NkJBRVE7QUFDUCxhQUNFO0FBQUE7QUFBQSxVQUFLLE1BQUssTUFBVixFQUFpQixLQUFLLEtBQUtwRSxTQUEzQjtBQUNHLGFBQUtPLEtBQUwsQ0FBVzZFO0FBRGQsT0FERjtBQUtEOzs7RUFqV21DQyxnQkFBTUMsUzs7QUFBdkJ6RixRLENBQ1owRixTLEdBQVk7QUFDakJiLGdCQUFjYyxvQkFBVUMsSUFEUDtBQUVqQmQsZ0JBQWNhLG9CQUFVQyxJQUZQO0FBR2pCYixpQkFBZVksb0JBQVVDLElBSFI7QUFJakJMLFlBQVVJLG9CQUFVRTtBQUpILEM7QUFEQTdGLFEsQ0E2Qlo4RixpQixHQUFvQjtBQUN6QnRGLFlBQVVtRixvQkFBVUk7QUFESyxDO0FBN0JSL0YsUSxDQWlDWmdHLFksR0FBZTtBQUNwQjlDLHFCQUFtQnlDLG9CQUFVSTtBQURULEM7a0JBakNIL0YsUSIsImZpbGUiOiJNZW51TGlzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIEBmbG93ICovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7Tm9kZSBhcyBSZWFjdE5vZGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgS2VmaXIgZnJvbSAna2VmaXInO1xuaW1wb3J0IGtlZmlyU3RvcHBlciBmcm9tICdrZWZpci1zdG9wcGVyJztcbmltcG9ydCBmaW5kSW5kZXggZnJvbSAnYXJyYXktZmluZC1pbmRleCc7XG5pbXBvcnQgZnJvbUV2ZW50c0NhcHR1cmUgZnJvbSAnLi9saWIvZnJvbUV2ZW50c0NhcHR1cmUnO1xuXG5pbXBvcnQgTWVudUV2ZW50IGZyb20gJy4vZXZlbnRzL01lbnVFdmVudCc7XG5pbXBvcnQgQ2hvc2VuRXZlbnQgZnJvbSAnLi9ldmVudHMvQ2hvc2VuRXZlbnQnO1xuaW1wb3J0IHR5cGUge1Byb3BzIGFzIE1lbnVJdGVtUHJvcHN9IGZyb20gJy4vTWVudUl0ZW0nO1xuaW1wb3J0IHR5cGUge01lbnVMaXN0SW5zcGVjdG9yQ29udGV4dH0gZnJvbSAnLi9NZW51TGlzdEluc3BlY3Rvcic7XG5pbXBvcnQgdHlwZSB7RGlyZWN0aW9uLCBSZWN0fSBmcm9tICcuL3R5cGVzJztcblxuLy8gVGhpcyB0eXBlIG9mIG9iamVjdCBpcyBnaXZlbiB0byBhIE1lbnVJdGVtIHRvIHRhbGsgdG8gdGhlIE1lbnVMaXN0LlxuZXhwb3J0IHR5cGUgTWVudUxpc3RIYW5kbGUgPSB7XG4gIGhpZ2hsaWdodChieUtleWJvYXJkOiBib29sZWFuKTogdm9pZDtcbiAgdW5oaWdobGlnaHQoKTogdm9pZDtcbiAgbW92ZUN1cnNvcihkaXJlY3Rpb246IERpcmVjdGlvbiwgcHJldkN1cnNvckxvY2F0aW9uOiA/UmVjdCk6IHZvaWQ7XG4gIGl0ZW1DaG9zZW4oKTogdm9pZDtcbiAgdGFrZUtleWJvYXJkKCk6IHZvaWQ7XG4gIHJlbGVhc2VLZXlib2FyZCgpOiB2b2lkO1xuICBsb2NrSGlnaGxpZ2h0KCk6IHZvaWQ7XG4gIHVubG9ja0hpZ2hsaWdodCgpOiB2b2lkO1xuICB1cGRhdGVQcm9wcyhwcm9wczogTWVudUl0ZW1Qcm9wcyk6IHZvaWQ7XG4gIHVucmVnaXN0ZXIoKTogdm9pZDtcbn07XG5cbi8vIFRoaXMgdHlwZSBvZiBvYmplY3QgaXMgZ2l2ZW4gdG8gYSBNZW51TGlzdCB0byB0YWxrIHRvIGEgTWVudUl0ZW0uXG5leHBvcnQgdHlwZSBNZW51SXRlbUNvbnRyb2wgPSB7XG4gIG5vdGlmeUhpZ2hsaWdodGVkKFxuICAgIGhpZ2hsaWdodGVkOiBib29sZWFuLFxuICAgIGJ5S2V5Ym9hcmQ6ID9ib29sZWFuLFxuICAgIGRpcmVjdGlvbjogP0RpcmVjdGlvbixcbiAgICBwcmV2Q3Vyc29yTG9jYXRpb246ID9SZWN0XG4gICk6IHZvaWQ7XG4gIG5vdGlmeUV2ZW50KGV2ZW50OiBNZW51RXZlbnQpOiB2b2lkO1xufTtcblxuLy8gVGhpcyBpcyB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0IHRoYXQgTWVudUxpc3QgZ2l2ZXMgYXMgY29udGV4dCB0byBpdHNcbi8vIGRlc2NlbmRhbnRzLlxuZXhwb3J0IHR5cGUgTWVudUxpc3RDb250ZXh0ID0ge1xuICByZWdpc3Rlckl0ZW0oXG4gICAgcHJvcHM6IE1lbnVJdGVtUHJvcHMsXG4gICAgY29udHJvbDogTWVudUl0ZW1Db250cm9sLFxuICAgIGVsOiBIVE1MRWxlbWVudFxuICApOiBNZW51TGlzdEhhbmRsZTtcbn07XG5cbmV4cG9ydCB0eXBlIFByb3BzID0ge1xuICBvbkl0ZW1DaG9zZW4/OiA/KGV2ZW50OiBDaG9zZW5FdmVudCkgPT4gdm9pZDtcbiAgb25MZWZ0UHVzaGVkPzogPyhldmVudDogTWVudUV2ZW50KSA9PiB2b2lkO1xuICBvblJpZ2h0UHVzaGVkPzogPyhldmVudDogTWVudUV2ZW50KSA9PiB2b2lkO1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1lbnVMaXN0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFByb3BzPiB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgb25JdGVtQ2hvc2VuOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkxlZnRQdXNoZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uUmlnaHRQdXNoZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZVxuICB9O1xuXG4gIF9zdG9wcGVyID0ga2VmaXJTdG9wcGVyKCk7XG4gIF9saXN0SXRlbXM6IEFycmF5PHtcbiAgICBwcm9wczogTWVudUl0ZW1Qcm9wcztcbiAgICBjb250cm9sOiBNZW51SXRlbUNvbnRyb2w7XG4gIH0+ID0gW107XG5cbiAgLy8gVGhlIG5hdHVyYWwgaGlnaGxpZ2h0IGlzIHdoZXJlIHRoZSBoaWdobGlnaHQgd291bGQgYmUgaWYgbm8gbG9jayBpcyBhY3RpdmUuXG4gIF9uYXR1cmFsSGlnaGxpZ2h0ZWRJbmRleDogP251bWJlcjtcbiAgX2xvY2tlZEhpZ2hsaWdodGVkSW5kZXg6ID9udW1iZXI7XG4gIF9rZXlib2FyZFRha2VuQnlJbmRleDogP251bWJlcjtcblxuICBfZWw6ID9IVE1MRWxlbWVudDtcbiAgX2VsU2V0dGVyID0gKGVsOiA/SFRNTEVsZW1lbnQpID0+IHtcbiAgICB0aGlzLl9lbCA9IGVsO1xuICB9O1xuXG4gIF9nZXRWaXNpYmxlSGlnaGxpZ2h0ZWRJbmRleCgpOiA/bnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbG9ja2VkSGlnaGxpZ2h0ZWRJbmRleCAhPSBudWxsID9cbiAgICAgIHRoaXMuX2xvY2tlZEhpZ2hsaWdodGVkSW5kZXggOiB0aGlzLl9uYXR1cmFsSGlnaGxpZ2h0ZWRJbmRleDtcbiAgfVxuXG4gIHN0YXRpYyBjaGlsZENvbnRleHRUeXBlcyA9IHtcbiAgICBtZW51TGlzdDogUHJvcFR5cGVzLm9iamVjdFxuICB9O1xuXG4gIHN0YXRpYyBjb250ZXh0VHlwZXMgPSB7XG4gICAgbWVudUxpc3RJbnNwZWN0b3I6IFByb3BUeXBlcy5vYmplY3RcbiAgfTtcblxuICBnZXRDaGlsZENvbnRleHQoKTogT2JqZWN0IHtcbiAgICBjb25zdCBtZW51TGlzdDogTWVudUxpc3RDb250ZXh0ID0ge1xuICAgICAgcmVnaXN0ZXJJdGVtOiAocHJvcHMsIGNvbnRyb2wsIGVsKSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB7cHJvcHMsIGNvbnRyb2wsIGVsfTtcblxuICAgICAgICBjb25zdCByZWdpc3RlciA9ICgpID0+IHtcbiAgICAgICAgICBsZXQgaSA9IC0xO1xuICAgICAgICAgIGlmIChpdGVtLnByb3BzLmluZGV4ID09IG51bGwpIHtcbiAgICAgICAgICAgIGkgPSBmaW5kSW5kZXgoXG4gICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtcyxcbiAgICAgICAgICAgICAgX2l0ZW0gPT5cbiAgICAgICAgICAgICAgICAoaXRlbS5lbC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihfaXRlbS5lbCkmTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkcpID09PSAwXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpID0gZmluZEluZGV4KFxuICAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbXMsXG4gICAgICAgICAgICAgIF9pdGVtID0+IF9pdGVtLnByb3BzLmluZGV4ICE9IG51bGwgJiYgaXRlbS5wcm9wcy5pbmRleCA8IF9pdGVtLnByb3BzLmluZGV4XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaSA8IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9saXN0SXRlbXMuc3BsaWNlKGksIDAsIGl0ZW0pO1xuICAgICAgICAgICAgaWYgKHRoaXMuX25hdHVyYWxIaWdobGlnaHRlZEluZGV4ICE9IG51bGwgJiYgaSA8PSB0aGlzLl9uYXR1cmFsSGlnaGxpZ2h0ZWRJbmRleCkge1xuICAgICAgICAgICAgICB0aGlzLl9uYXR1cmFsSGlnaGxpZ2h0ZWRJbmRleCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuX2xvY2tlZEhpZ2hsaWdodGVkSW5kZXggIT0gbnVsbCAmJiBpIDw9IHRoaXMuX2xvY2tlZEhpZ2hsaWdodGVkSW5kZXgpIHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9ja2VkSGlnaGxpZ2h0ZWRJbmRleCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuX2tleWJvYXJkVGFrZW5CeUluZGV4ICE9IG51bGwgJiYgaSA8PSB0aGlzLl9rZXlib2FyZFRha2VuQnlJbmRleCkge1xuICAgICAgICAgICAgICB0aGlzLl9rZXlib2FyZFRha2VuQnlJbmRleCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICByZWdpc3RlcigpO1xuXG4gICAgICAgIGNvbnN0IG1lbnVMaXN0SGFuZGxlOiBNZW51TGlzdEhhbmRsZSA9IHtcbiAgICAgICAgICBoaWdobGlnaHQ6IChieUtleWJvYXJkOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpID0gdGhpcy5fbGlzdEl0ZW1zLmluZGV4T2YoaXRlbSk7XG4gICAgICAgICAgICBpZiAoaSA8IDApIHRocm93IG5ldyBFcnJvcignQWxyZWFkeSB1bnJlZ2lzdGVyZWQgTWVudUl0ZW0nKTtcbiAgICAgICAgICAgIHRoaXMuX25hdHVyYWxIaWdobGlnaHQoaSwgYnlLZXlib2FyZCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB1bmhpZ2hsaWdodDogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaSA9IHRoaXMuX2xpc3RJdGVtcy5pbmRleE9mKGl0ZW0pO1xuICAgICAgICAgICAgaWYgKGkgPCAwKSB0aHJvdyBuZXcgRXJyb3IoJ0FscmVhZHkgdW5yZWdpc3RlcmVkIE1lbnVJdGVtJyk7XG4gICAgICAgICAgICBpZiAodGhpcy5fbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXggPT09IGkpIHtcbiAgICAgICAgICAgICAgdGhpcy5fbmF0dXJhbEhpZ2hsaWdodChudWxsLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBpdGVtQ2hvc2VuOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9kaXNwYXRjaEV2ZW50KGNvbnRyb2wsIG5ldyBDaG9zZW5FdmVudCgnY2hvc2VuJywgZmFsc2UpKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRha2VLZXlib2FyZDogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaSA9IHRoaXMuX2xpc3RJdGVtcy5pbmRleE9mKGl0ZW0pO1xuICAgICAgICAgICAgaWYgKGkgPCAwKSB0aHJvdyBuZXcgRXJyb3IoJ0FscmVhZHkgdW5yZWdpc3RlcmVkIE1lbnVJdGVtJyk7XG4gICAgICAgICAgICB0aGlzLl9rZXlib2FyZFRha2VuQnlJbmRleCA9IGk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZWxlYXNlS2V5Ym9hcmQ6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLl9saXN0SXRlbXMuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgICAgIGlmIChpIDwgMCkgdGhyb3cgbmV3IEVycm9yKCdBbHJlYWR5IHVucmVnaXN0ZXJlZCBNZW51SXRlbScpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2tleWJvYXJkVGFrZW5CeUluZGV4ID09PSBpKSB7XG4gICAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkVGFrZW5CeUluZGV4ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGxvY2tIaWdobGlnaHQ6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLl9saXN0SXRlbXMuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgICAgIGlmIChpIDwgMCkgdGhyb3cgbmV3IEVycm9yKCdBbHJlYWR5IHVucmVnaXN0ZXJlZCBNZW51SXRlbScpO1xuICAgICAgICAgICAgdGhpcy5fbG9ja0hpZ2hsaWdodChpKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHVubG9ja0hpZ2hsaWdodDogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaSA9IHRoaXMuX2xpc3RJdGVtcy5pbmRleE9mKGl0ZW0pO1xuICAgICAgICAgICAgaWYgKGkgPCAwKSB0aHJvdyBuZXcgRXJyb3IoJ0FscmVhZHkgdW5yZWdpc3RlcmVkIE1lbnVJdGVtJyk7XG4gICAgICAgICAgICBpZiAodGhpcy5fbG9ja2VkSGlnaGxpZ2h0ZWRJbmRleCA9PT0gaSkge1xuICAgICAgICAgICAgICB0aGlzLl9sb2NrSGlnaGxpZ2h0KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbW92ZUN1cnNvcjogKGRpcmVjdGlvbjogRGlyZWN0aW9uLCBwcmV2Q3Vyc29yTG9jYXRpb246ID9SZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1vdmVDdXJzb3IoZGlyZWN0aW9uLCBwcmV2Q3Vyc29yTG9jYXRpb24pO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdXBkYXRlUHJvcHM6IChuZXdQcm9wczogTWVudUl0ZW1Qcm9wcykgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0ucHJvcHMuaW5kZXggIT09IG5ld1Byb3BzLmluZGV4KSB7XG4gICAgICAgICAgICAgIGNvbnN0IG9sZEluZGV4ID0gdGhpcy5fbGlzdEl0ZW1zLmluZGV4T2YoaXRlbSk7XG4gICAgICAgICAgICAgIGNvbnN0IGlzTmF0dXJhbEhpZ2hsaWdodEluZGV4ID0gdGhpcy5fbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXggPT09IG9sZEluZGV4O1xuICAgICAgICAgICAgICBjb25zdCBpc0xvY2tlZEhpZ2hsaWdodEluZGV4ID0gdGhpcy5fbG9ja2VkSGlnaGxpZ2h0ZWRJbmRleCA9PT0gb2xkSW5kZXg7XG4gICAgICAgICAgICAgIGNvbnN0IGlzS2V5Ym9hcmRUYWtlbkJ5SW5kZXggPSB0aGlzLl9rZXlib2FyZFRha2VuQnlJbmRleCA9PT0gb2xkSW5kZXg7XG5cbiAgICAgICAgICAgICAgbWVudUxpc3RIYW5kbGUudW5yZWdpc3RlcigpO1xuICAgICAgICAgICAgICBwcm9wcyA9IG5ld1Byb3BzO1xuICAgICAgICAgICAgICBpdGVtLnByb3BzID0gbmV3UHJvcHM7XG4gICAgICAgICAgICAgIHJlZ2lzdGVyKCk7XG5cbiAgICAgICAgICAgICAgaWYgKGlzTmF0dXJhbEhpZ2hsaWdodEluZGV4IHx8IGlzTG9ja2VkSGlnaGxpZ2h0SW5kZXggfHwgaXNLZXlib2FyZFRha2VuQnlJbmRleCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0luZGV4ID0gdGhpcy5fbGlzdEl0ZW1zLmluZGV4T2YoaXRlbSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzTmF0dXJhbEhpZ2hsaWdodEluZGV4KSB0aGlzLl9uYXR1cmFsSGlnaGxpZ2h0ZWRJbmRleCA9IG5ld0luZGV4O1xuICAgICAgICAgICAgICAgIGlmIChpc0xvY2tlZEhpZ2hsaWdodEluZGV4KSB0aGlzLl9sb2NrZWRIaWdobGlnaHRlZEluZGV4ID0gbmV3SW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKGlzS2V5Ym9hcmRUYWtlbkJ5SW5kZXgpIHRoaXMuX2tleWJvYXJkVGFrZW5CeUluZGV4ID0gbmV3SW5kZXg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHByb3BzID0gbmV3UHJvcHM7XG4gICAgICAgICAgICAgIGl0ZW0ucHJvcHMgPSBuZXdQcm9wcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHVucmVnaXN0ZXI6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLl9saXN0SXRlbXMuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgICAgIGlmIChpIDwgMCkgdGhyb3cgbmV3IEVycm9yKCdBbHJlYWR5IHVucmVnaXN0ZXJlZCBNZW51SXRlbScpO1xuICAgICAgICAgICAgaWYgKGkgPT09IHRoaXMuX25hdHVyYWxIaWdobGlnaHRlZEluZGV4KSB7XG4gICAgICAgICAgICAgIHRoaXMuX25hdHVyYWxIaWdobGlnaHRlZEluZGV4ID0gbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXggIT0gbnVsbCAmJiBpIDwgdGhpcy5fbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXgpIHtcbiAgICAgICAgICAgICAgdGhpcy5fbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXgtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpID09PSB0aGlzLl9sb2NrZWRIaWdobGlnaHRlZEluZGV4KSB7XG4gICAgICAgICAgICAgIHRoaXMuX2xvY2tlZEhpZ2hsaWdodGVkSW5kZXggPSBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9sb2NrZWRIaWdobGlnaHRlZEluZGV4ICE9IG51bGwgJiYgaSA8IHRoaXMuX2xvY2tlZEhpZ2hsaWdodGVkSW5kZXgpIHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9ja2VkSGlnaGxpZ2h0ZWRJbmRleC0tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGkgPT09IHRoaXMuX2tleWJvYXJkVGFrZW5CeUluZGV4KSB7XG4gICAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkVGFrZW5CeUluZGV4ID0gbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fa2V5Ym9hcmRUYWtlbkJ5SW5kZXggIT0gbnVsbCAmJiBpIDwgdGhpcy5fa2V5Ym9hcmRUYWtlbkJ5SW5kZXgpIHtcbiAgICAgICAgICAgICAgdGhpcy5fa2V5Ym9hcmRUYWtlbkJ5SW5kZXgtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbWVudUxpc3RIYW5kbGU7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4ge21lbnVMaXN0fTtcbiAgfVxuXG4gIF9wYXJlbnRDdHgoKTogP01lbnVMaXN0SW5zcGVjdG9yQ29udGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5tZW51TGlzdEluc3BlY3RvcjtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGNvbnN0IGlzRW50ZXJPckFycm93S2V5ID0gZSA9PlxuICAgICAgKGUud2hpY2ggPT09IDEzKSB8fCAoMzcgPD0gZS53aGljaCAmJiBlLndoaWNoIDw9IDQwKTtcbiAgICBjb25zdCBlbCA9IHRoaXMuX2VsO1xuICAgIC8qOjogaWYgKCFlbCkgdGhyb3cgbmV3IEVycm9yKCk7ICovXG5cbiAgICAvLyBUaGUgb25seSB0aGluZ3MgdGhhdCBzaG91bGQgcmVjZWl2ZSBrZXlkb3duL2tleXByZXNzIGV2ZW50cyBiZWZvcmUgdXNcbiAgICAvLyBhcmUgb3VyIGNoaWxkcmVuLiBUaGlzIGFsbG93cyBhIE1lbnVJdGVtIHRvIGNvbnRhaW4gYSB0ZXh0IGlucHV0XG4gICAgLy8gd2hpY2ggc2VsZWN0aXZlbHkgc3RvcHMgcHJvcGFnYXRpb24gb24ga2V5IGV2ZW50cyBmb3IgZXhhbXBsZS5cbiAgICBLZWZpci5tZXJnZShbXG4gICAgICBLZWZpci5mcm9tRXZlbnRzKHdpbmRvdywgJ2tleWRvd24nKS5maWx0ZXIoaXNFbnRlck9yQXJyb3dLZXkpXG4gICAgICAgIC5maWx0ZXIoZSA9PiBlbC5jb250YWlucyhlLnRhcmdldCkpLFxuICAgICAgZnJvbUV2ZW50c0NhcHR1cmUod2luZG93LCAna2V5ZG93bicpLmZpbHRlcihpc0VudGVyT3JBcnJvd0tleSlcbiAgICAgICAgLmZpbHRlcihlID0+ICFlbC5jb250YWlucyhlLnRhcmdldCkpXG4gICAgXSlcbiAgICAgIC50YWtlVW50aWxCeSh0aGlzLl9zdG9wcGVyKVxuICAgICAgLm9uVmFsdWUoZXZlbnQgPT4gdGhpcy5fa2V5KGV2ZW50KSk7XG5cbiAgICBjb25zdCBwYXJlbnRDdHggPSB0aGlzLl9wYXJlbnRDdHgoKTtcbiAgICBpZiAocGFyZW50Q3R4KSB7XG4gICAgICBwYXJlbnRDdHgucmVnaXN0ZXJNZW51TGlzdCh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLl9zdG9wcGVyLmRlc3Ryb3koKTtcblxuICAgIGNvbnN0IHBhcmVudEN0eCA9IHRoaXMuX3BhcmVudEN0eCgpO1xuICAgIGlmIChwYXJlbnRDdHgpIHtcbiAgICAgIHBhcmVudEN0eC51bnJlZ2lzdGVyTWVudUxpc3QodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgX25hdHVyYWxIaWdobGlnaHQoaW5kZXg6ID9udW1iZXIsIGJ5S2V5Ym9hcmQ6IGJvb2xlYW4sIGRpcmVjdGlvbjogP0RpcmVjdGlvbiwgcHJldkN1cnNvckxvY2F0aW9uOiA/UmVjdCkge1xuICAgIGNvbnN0IHZpc2libGVIaWdobGlnaHRlZEluZGV4ID0gdGhpcy5fZ2V0VmlzaWJsZUhpZ2hsaWdodGVkSW5kZXgoKTtcblxuICAgIGlmICh0aGlzLl9sb2NrZWRIaWdobGlnaHRlZEluZGV4ICE9IG51bGwgJiYgYnlLZXlib2FyZCkge1xuICAgICAgdGhpcy5fbG9ja2VkSGlnaGxpZ2h0ZWRJbmRleCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuX25hdHVyYWxIaWdobGlnaHRlZEluZGV4ID0gaW5kZXg7XG4gICAgaWYgKHRoaXMuX2xvY2tlZEhpZ2hsaWdodGVkSW5kZXggPT0gbnVsbCkge1xuICAgICAgaWYgKGluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5fbGlzdEl0ZW1zW2luZGV4XS5jb250cm9sLm5vdGlmeUhpZ2hsaWdodGVkKHRydWUsIGJ5S2V5Ym9hcmQsIGRpcmVjdGlvbiwgcHJldkN1cnNvckxvY2F0aW9uKTtcbiAgICAgIH1cbiAgICAgIGlmICh2aXNpYmxlSGlnaGxpZ2h0ZWRJbmRleCAhPSBudWxsICYmIHZpc2libGVIaWdobGlnaHRlZEluZGV4ICE9IGluZGV4KSB7XG4gICAgICAgIHRoaXMuX2xpc3RJdGVtc1t2aXNpYmxlSGlnaGxpZ2h0ZWRJbmRleF0uY29udHJvbC5ub3RpZnlIaWdobGlnaHRlZChmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX2xvY2tIaWdobGlnaHQoaW5kZXg6ID9udW1iZXIpIHtcbiAgICBpZiAoaW5kZXggPT09IHRoaXMuX2xvY2tlZEhpZ2hsaWdodGVkSW5kZXgpIHJldHVybjtcbiAgICBjb25zdCB2aXNpYmxlSGlnaGxpZ2h0ZWRJbmRleCA9IHRoaXMuX2dldFZpc2libGVIaWdobGlnaHRlZEluZGV4KCk7XG4gICAgdGhpcy5fbG9ja2VkSGlnaGxpZ2h0ZWRJbmRleCA9IGluZGV4O1xuICAgIGNvbnN0IG5ld1Zpc2libGVIaWdobGlnaHRlZEluZGV4ID0gdGhpcy5fZ2V0VmlzaWJsZUhpZ2hsaWdodGVkSW5kZXgoKTtcbiAgICBpZiAodmlzaWJsZUhpZ2hsaWdodGVkSW5kZXggIT0gbnVsbCAmJiBuZXdWaXNpYmxlSGlnaGxpZ2h0ZWRJbmRleCA9PSBudWxsKSB7XG4gICAgICAvLyBXaGVuIHVubG9ja2luZywgcHJlZmVyIHRvIGtlZXAgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIG92ZXIgZGUtc2VsZWN0aW5nXG4gICAgICAvLyBldmVyeXRoaW5nLlxuICAgICAgdGhpcy5fbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXggPSB2aXNpYmxlSGlnaGxpZ2h0ZWRJbmRleDtcbiAgICB9IGVsc2UgaWYgKHZpc2libGVIaWdobGlnaHRlZEluZGV4ICE9IG5ld1Zpc2libGVIaWdobGlnaHRlZEluZGV4KSB7XG4gICAgICBpZiAodmlzaWJsZUhpZ2hsaWdodGVkSW5kZXggIT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9saXN0SXRlbXNbdmlzaWJsZUhpZ2hsaWdodGVkSW5kZXhdLmNvbnRyb2wubm90aWZ5SGlnaGxpZ2h0ZWQoZmFsc2UpO1xuICAgICAgfVxuICAgICAgaWYgKG5ld1Zpc2libGVIaWdobGlnaHRlZEluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5fbGlzdEl0ZW1zW25ld1Zpc2libGVIaWdobGlnaHRlZEluZGV4XS5jb250cm9sLm5vdGlmeUhpZ2hsaWdodGVkKHRydWUsIGZhbHNlKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXggIT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9saXN0SXRlbXNbdGhpcy5fbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXhdLmNvbnRyb2wubm90aWZ5SGlnaGxpZ2h0ZWQodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9kaXNwYXRjaEV2ZW50KGNvbnRyb2w6ID9NZW51SXRlbUNvbnRyb2wsIGV2ZW50OiBNZW51RXZlbnQpIHtcbiAgICBpZiAoY29udHJvbCkge1xuICAgICAgY29udHJvbC5ub3RpZnlFdmVudChldmVudCk7XG4gICAgICBpZiAoZXZlbnQuY2FuY2VsQnViYmxlKSByZXR1cm47XG4gICAgfVxuICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgIGNhc2UgJ2Nob3Nlbic6XG4gICAgICAvKjo6IGlmICghKGV2ZW50IGluc3RhbmNlb2YgQ2hvc2VuRXZlbnQpKSB0aHJvdyBuZXcgRXJyb3IoKTsgKi9cbiAgICAgIGlmICh0aGlzLnByb3BzLm9uSXRlbUNob3NlbikgdGhpcy5wcm9wcy5vbkl0ZW1DaG9zZW4oZXZlbnQpO1xuICAgICAgYnJlYWs7XG4gICAgLy8gY2FzZSAndXAnOlxuICAgIC8vICAgYnJlYWs7XG4gICAgLy8gY2FzZSAnZG93bic6XG4gICAgLy8gICBicmVhaztcbiAgICBjYXNlICdsZWZ0JzpcbiAgICAgIGlmICh0aGlzLnByb3BzLm9uTGVmdFB1c2hlZCkgdGhpcy5wcm9wcy5vbkxlZnRQdXNoZWQoZXZlbnQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgaWYgKHRoaXMucHJvcHMub25SaWdodFB1c2hlZCkgdGhpcy5wcm9wcy5vblJpZ2h0UHVzaGVkKGV2ZW50KTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAoZXZlbnQuY2FuY2VsQnViYmxlKSByZXR1cm47XG4gICAgY29uc3QgcGFyZW50Q3R4ID0gdGhpcy5fcGFyZW50Q3R4KCk7XG4gICAgaWYgKHBhcmVudEN0eCkge1xuICAgICAgcGFyZW50Q3R4LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIF9rZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5fa2V5Ym9hcmRUYWtlbkJ5SW5kZXggIT0gbnVsbCB8fCB0aGlzLl9saXN0SXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmlzaWJsZUhpZ2hsaWdodGVkSW5kZXggPSB0aGlzLl9nZXRWaXNpYmxlSGlnaGxpZ2h0ZWRJbmRleCgpO1xuXG4gICAgLy8gZW50ZXIsIGxlZnQsIHJpZ2h0IGFjdGl2YXRlIGZvciB0aGUgY3VycmVudCB2aXNpYmx5IHNlbGVjdGVkIGl0ZW0uXG4gICAgLy8gdXAgYW5kIGRvd24gZGUtYWN0aXZhdGUgYW55IGxvY2tzIGluIHBsYWNlLCBzbyB0aGF0IHRoZXkgYWN0IGZyb20gdGhlIGxhc3RcbiAgICAvLyBuYXR1cmFsbHktc2VsZWN0ZWQgaXRlbS5cblxuICAgIGxldCBtRXZlbnQgPSBudWxsO1xuXG4gICAgc3dpdGNoIChldmVudC53aGljaCkge1xuICAgIGNhc2UgMTM6IC8vZW50ZXJcbiAgICAgIGlmICh2aXNpYmxlSGlnaGxpZ2h0ZWRJbmRleCAhPSBudWxsKSB7XG4gICAgICAgIG1FdmVudCA9IG5ldyBDaG9zZW5FdmVudCgnY2hvc2VuJywgdHJ1ZSk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAzNzogLy9sZWZ0XG4gICAgICBpZiAodmlzaWJsZUhpZ2hsaWdodGVkSW5kZXggIT0gbnVsbCkge1xuICAgICAgICBtRXZlbnQgPSBuZXcgTWVudUV2ZW50KCdsZWZ0Jyk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDM5OiAvL3JpZ2h0XG4gICAgICBpZiAodmlzaWJsZUhpZ2hsaWdodGVkSW5kZXggIT0gbnVsbCkge1xuICAgICAgICBtRXZlbnQgPSBuZXcgTWVudUV2ZW50KCdyaWdodCcpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAzODogLy91cFxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy5tb3ZlQ3Vyc29yKCd1cCcpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA0MDogLy9kb3duXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLm1vdmVDdXJzb3IoJ2Rvd24nKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChtRXZlbnQpIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB2aXNpYmxlSGlnaGxpZ2h0ZWRJbmRleCA9PSBudWxsID8gbnVsbCA6XG4gICAgICAgIHRoaXMuX2xpc3RJdGVtc1t2aXNpYmxlSGlnaGxpZ2h0ZWRJbmRleF0uY29udHJvbDtcbiAgICAgIHRoaXMuX2Rpc3BhdGNoRXZlbnQoY29udHJvbCwgbUV2ZW50KTtcbiAgICAgIGlmIChtRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmIChtRXZlbnQuZGVmYXVsdFByZXZlbnRlZCB8fCBtRXZlbnQuY2FuY2VsQnViYmxlKSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBtb3ZlQ3Vyc29yKGRpcmVjdGlvbjogRGlyZWN0aW9uLCBwcmV2Q3Vyc29yTG9jYXRpb246ID9SZWN0KSB7XG4gICAgaWYgKHRoaXMuX2xpc3RJdGVtcy5sZW5ndGggPT0gMCkgcmV0dXJuO1xuXG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICBjYXNlICd1cCc6XG4gICAgICBpZiAodGhpcy5fbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXggPT0gbnVsbCB8fCB0aGlzLl9uYXR1cmFsSGlnaGxpZ2h0ZWRJbmRleCA9PSAwKSB7XG4gICAgICAgIHRoaXMuX25hdHVyYWxIaWdobGlnaHQodGhpcy5fbGlzdEl0ZW1zLmxlbmd0aC0xLCB0cnVlLCBkaXJlY3Rpb24sIHByZXZDdXJzb3JMb2NhdGlvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9uYXR1cmFsSGlnaGxpZ2h0KHRoaXMuX25hdHVyYWxIaWdobGlnaHRlZEluZGV4LTEsIHRydWUsIGRpcmVjdGlvbiwgcHJldkN1cnNvckxvY2F0aW9uKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgaWYgKHRoaXMuX25hdHVyYWxIaWdobGlnaHRlZEluZGV4ID09IG51bGwgfHwgdGhpcy5fbmF0dXJhbEhpZ2hsaWdodGVkSW5kZXggPT0gdGhpcy5fbGlzdEl0ZW1zLmxlbmd0aC0xKSB7XG4gICAgICAgIHRoaXMuX25hdHVyYWxIaWdobGlnaHQoMCwgdHJ1ZSwgZGlyZWN0aW9uLCBwcmV2Q3Vyc29yTG9jYXRpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fbmF0dXJhbEhpZ2hsaWdodCh0aGlzLl9uYXR1cmFsSGlnaGxpZ2h0ZWRJbmRleCsxLCB0cnVlLCBkaXJlY3Rpb24sIHByZXZDdXJzb3JMb2NhdGlvbik7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBoYXNIaWdobGlnaHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFZpc2libGVIaWdobGlnaHRlZEluZGV4KCkgIT0gbnVsbDtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiByb2xlPVwibWVudVwiIHJlZj17dGhpcy5fZWxTZXR0ZXJ9PlxuICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cbiJdfQ==

@@ -143,2 +143,2 @@ 'use strict';

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9NZW51TGlzdEluc3BlY3Rvci5qcyJdLCJuYW1lcyI6WyJNZW51TGlzdEluc3BlY3RvciIsIl9kZXNjZW5kYW50TWVudUxpc3RzIiwiY29udGV4dCIsIm1lbnVMaXN0SW5zcGVjdG9yIiwicmVnaXN0ZXJNZW51TGlzdCIsIm1lbnVMaXN0IiwicHVzaCIsInVucmVnaXN0ZXJNZW51TGlzdCIsImkiLCJpbmRleE9mIiwiRXJyb3IiLCJzcGxpY2UiLCJkaXNwYXRjaEV2ZW50IiwiZXZlbnQiLCJ0eXBlIiwicHJvcHMiLCJvbkl0ZW1DaG9zZW4iLCJvbkxlZnRQdXNoZWQiLCJvblJpZ2h0UHVzaGVkIiwiY2FuY2VsQnViYmxlIiwicGFyZW50Q3R4IiwiX3BhcmVudEN0eCIsImRpcmVjdGlvbiIsInByZXZDdXJzb3JMb2NhdGlvbiIsIm1vdmVDdXJzb3IiLCJsZW4iLCJsZW5ndGgiLCJoYXNIaWdobGlnaHQiLCJjaGlsZHJlbiIsIkNvbXBvbmVudCIsInByb3BUeXBlcyIsImZ1bmMiLCJlbGVtZW50IiwiY2hpbGRDb250ZXh0VHlwZXMiLCJvYmplY3QiLCJjb250ZXh0VHlwZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7Ozs7QUFFQTs7OztBQUdBOzs7Ozs7SUFnQnFCQSxpQjs7Ozs7Ozs7Ozs7Ozs7a09BaUJuQkMsb0IsR0FBd0MsRTs7Ozs7aUNBRUE7QUFDdEMsYUFBTyxLQUFLQyxPQUFMLENBQWFDLGlCQUFwQjtBQUNEOzs7c0NBRXlCO0FBQUE7O0FBQ3hCLFVBQU1BLG9CQUE4QztBQUNsREMsMEJBQWtCLDBCQUFDQyxRQUFELEVBQXdCO0FBQ3hDLGlCQUFLSixvQkFBTCxDQUEwQkssSUFBMUIsQ0FBK0JELFFBQS9CO0FBQ0QsU0FIaUQ7QUFJbERFLDRCQUFvQiw0QkFBQ0YsUUFBRCxFQUF3QjtBQUMxQyxjQUFNRyxJQUFJLE9BQUtQLG9CQUFMLENBQTBCUSxPQUExQixDQUFrQ0osUUFBbEMsQ0FBVjtBQUNBLGNBQUlHLElBQUksQ0FBUixFQUFXLE1BQU0sSUFBSUUsS0FBSixDQUFVLHlCQUFWLENBQU47QUFDWCxpQkFBS1Qsb0JBQUwsQ0FBMEJVLE1BQTFCLENBQWlDSCxDQUFqQyxFQUFvQyxDQUFwQztBQUNELFNBUmlEO0FBU2xESSx1QkFBZSx1QkFBQ0MsS0FBRCxFQUFzQjtBQUNuQyxrQkFBUUEsTUFBTUMsSUFBZDtBQUNBLGlCQUFLLFFBQUw7QUFDRTtBQUNBLGtCQUFJLE9BQUtDLEtBQUwsQ0FBV0MsWUFBZixFQUE2QixPQUFLRCxLQUFMLENBQVdDLFlBQVgsQ0FBd0JILEtBQXhCO0FBQzdCO0FBQ0YsaUJBQUssTUFBTDtBQUNFLGtCQUFJLE9BQUtFLEtBQUwsQ0FBV0UsWUFBZixFQUE2QixPQUFLRixLQUFMLENBQVdFLFlBQVgsQ0FBd0JKLEtBQXhCO0FBQzdCO0FBQ0YsaUJBQUssT0FBTDtBQUNFLGtCQUFJLE9BQUtFLEtBQUwsQ0FBV0csYUFBZixFQUE4QixPQUFLSCxLQUFMLENBQVdHLGFBQVgsQ0FBeUJMLEtBQXpCO0FBQzlCO0FBVkY7QUFZQSxjQUFJQSxNQUFNTSxZQUFWLEVBQXdCO0FBQ3hCLGNBQU1DLFlBQVksT0FBS0MsVUFBTCxFQUFsQjtBQUNBLGNBQUlELFNBQUosRUFBZTtBQUNiQSxzQkFBVVIsYUFBVixDQUF3QkMsS0FBeEI7QUFDRDtBQUNGO0FBM0JpRCxPQUFwRDtBQTZCQSxhQUFPLEVBQUNWLG9DQUFELEVBQVA7QUFDRDs7OytCQUVVbUIsUyxFQUFzQkMsa0IsRUFBb0M7QUFDbkUsVUFBTWxCLFdBQVcsS0FBS0osb0JBQUwsQ0FBMEIsQ0FBMUIsQ0FBakI7QUFDQSxVQUFJLENBQUNJLFFBQUwsRUFBZTtBQUNiLGVBQU8sS0FBUDtBQUNEO0FBQ0RBLGVBQVNtQixVQUFULENBQW9CRixTQUFwQixFQUErQkMsa0JBQS9CO0FBQ0EsYUFBTyxJQUFQO0FBQ0Q7OzttQ0FFdUI7QUFDdEIsV0FBSyxJQUFJZixJQUFFLENBQU4sRUFBU2lCLE1BQUksS0FBS3hCLG9CQUFMLENBQTBCeUIsTUFBNUMsRUFBb0RsQixJQUFFaUIsR0FBdEQsRUFBMkRqQixHQUEzRCxFQUFnRTtBQUM5RCxZQUFJLEtBQUtQLG9CQUFMLENBQTBCTyxDQUExQixFQUE2Qm1CLFlBQTdCLEVBQUosRUFBaUQ7QUFDL0MsaUJBQU8sSUFBUDtBQUNEO0FBQ0Y7QUFDRCxhQUFPLEtBQVA7QUFDRDs7OzZCQUVRO0FBQ1AsYUFBTyxLQUFLWixLQUFMLENBQVdhLFFBQWxCO0FBQ0Q7OztFQTVFNEMsZ0JBQU1DLFM7O0FBQWhDN0IsaUIsQ0FDWjhCLFMsR0FBWTtBQUNqQmQsZ0JBQWMsb0JBQVVlLElBRFA7QUFFakJkLGdCQUFjLG9CQUFVYyxJQUZQO0FBR2pCYixpQkFBZSxvQkFBVWEsSUFIUjs7QUFLakJILFlBQVUsb0JBQVVJO0FBTEgsQztBQURBaEMsaUIsQ0FTWmlDLGlCLEdBQW9CO0FBQ3pCOUIscUJBQW1CLG9CQUFVK0I7QUFESixDO0FBVFJsQyxpQixDQWFabUMsWSxHQUFlO0FBQ3BCaEMscUJBQW1CLG9CQUFVK0I7QUFEVCxDO2tCQWJIbEMsaUIiLCJmaWxlIjoiTWVudUxpc3RJbnNwZWN0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBAZmxvdyAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge05vZGUgYXMgUmVhY3ROb2RlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHR5cGUgTWVudUxpc3QgZnJvbSAnLi9NZW51TGlzdCc7XG5pbXBvcnQgdHlwZSBNZW51RXZlbnQgZnJvbSAnLi9ldmVudHMvTWVudUV2ZW50JztcbmltcG9ydCBDaG9zZW5FdmVudCBmcm9tICcuL2V2ZW50cy9DaG9zZW5FdmVudCc7XG5pbXBvcnQgdHlwZSB7RGlyZWN0aW9uLCBSZWN0fSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgTWVudUxpc3RJbnNwZWN0b3JDb250ZXh0ID0ge1xuICByZWdpc3Rlck1lbnVMaXN0KG1lbnVMaXN0OiBNZW51TGlzdCk6IHZvaWQ7XG4gIHVucmVnaXN0ZXJNZW51TGlzdChtZW51TGlzdDogTWVudUxpc3QpOiB2b2lkO1xuICBkaXNwYXRjaEV2ZW50KGV2ZW50OiBNZW51RXZlbnQpOiB2b2lkO1xufTtcblxuZXhwb3J0IHR5cGUgUHJvcHMgPSB7XG4gIG9uSXRlbUNob3Nlbj86ID8oZXZlbnQ6IENob3NlbkV2ZW50KSA9PiB2b2lkO1xuICBvbkxlZnRQdXNoZWQ/OiA/KGV2ZW50OiBNZW51RXZlbnQpID0+IHZvaWQ7XG4gIG9uUmlnaHRQdXNoZWQ/OiA/KGV2ZW50OiBNZW51RXZlbnQpID0+IHZvaWQ7XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWVudUxpc3RJbnNwZWN0b3IgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8UHJvcHM+IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBvbkl0ZW1DaG9zZW46IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uTGVmdFB1c2hlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25SaWdodFB1c2hlZDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICBjaGlsZHJlbjogUHJvcFR5cGVzLmVsZW1lbnRcbiAgfTtcblxuICBzdGF0aWMgY2hpbGRDb250ZXh0VHlwZXMgPSB7XG4gICAgbWVudUxpc3RJbnNwZWN0b3I6IFByb3BUeXBlcy5vYmplY3RcbiAgfTtcblxuICBzdGF0aWMgY29udGV4dFR5cGVzID0ge1xuICAgIG1lbnVMaXN0SW5zcGVjdG9yOiBQcm9wVHlwZXMub2JqZWN0XG4gIH07XG5cbiAgX2Rlc2NlbmRhbnRNZW51TGlzdHM6IEFycmF5PE1lbnVMaXN0PiA9IFtdO1xuXG4gIF9wYXJlbnRDdHgoKTogP01lbnVMaXN0SW5zcGVjdG9yQ29udGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5tZW51TGlzdEluc3BlY3RvcjtcbiAgfVxuXG4gIGdldENoaWxkQ29udGV4dCgpOiBPYmplY3Qge1xuICAgIGNvbnN0IG1lbnVMaXN0SW5zcGVjdG9yOiBNZW51TGlzdEluc3BlY3RvckNvbnRleHQgPSB7XG4gICAgICByZWdpc3Rlck1lbnVMaXN0OiAobWVudUxpc3Q6IE1lbnVMaXN0KSA9PiB7XG4gICAgICAgIHRoaXMuX2Rlc2NlbmRhbnRNZW51TGlzdHMucHVzaChtZW51TGlzdCk7XG4gICAgICB9LFxuICAgICAgdW5yZWdpc3Rlck1lbnVMaXN0OiAobWVudUxpc3Q6IE1lbnVMaXN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGkgPSB0aGlzLl9kZXNjZW5kYW50TWVudUxpc3RzLmluZGV4T2YobWVudUxpc3QpO1xuICAgICAgICBpZiAoaSA8IDApIHRocm93IG5ldyBFcnJvcignTWVudUxpc3Qgbm90IHJlZ2lzdGVyZWQnKTtcbiAgICAgICAgdGhpcy5fZGVzY2VuZGFudE1lbnVMaXN0cy5zcGxpY2UoaSwgMSk7XG4gICAgICB9LFxuICAgICAgZGlzcGF0Y2hFdmVudDogKGV2ZW50OiBNZW51RXZlbnQpID0+IHtcbiAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2Nob3Nlbic6XG4gICAgICAgICAgLyo6OiBpZiAoIShldmVudCBpbnN0YW5jZW9mIENob3NlbkV2ZW50KSkgdGhyb3cgbmV3IEVycm9yKCk7ICovXG4gICAgICAgICAgaWYgKHRoaXMucHJvcHMub25JdGVtQ2hvc2VuKSB0aGlzLnByb3BzLm9uSXRlbUNob3NlbihldmVudCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uTGVmdFB1c2hlZCkgdGhpcy5wcm9wcy5vbkxlZnRQdXNoZWQoZXZlbnQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SaWdodFB1c2hlZCkgdGhpcy5wcm9wcy5vblJpZ2h0UHVzaGVkKGV2ZW50KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQuY2FuY2VsQnViYmxlKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHBhcmVudEN0eCA9IHRoaXMuX3BhcmVudEN0eCgpO1xuICAgICAgICBpZiAocGFyZW50Q3R4KSB7XG4gICAgICAgICAgcGFyZW50Q3R4LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4ge21lbnVMaXN0SW5zcGVjdG9yfTtcbiAgfVxuXG4gIG1vdmVDdXJzb3IoZGlyZWN0aW9uOiBEaXJlY3Rpb24sIHByZXZDdXJzb3JMb2NhdGlvbjogP1JlY3QpOiBib29sZWFuIHtcbiAgICBjb25zdCBtZW51TGlzdCA9IHRoaXMuX2Rlc2NlbmRhbnRNZW51TGlzdHNbMF07XG4gICAgaWYgKCFtZW51TGlzdCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBtZW51TGlzdC5tb3ZlQ3Vyc29yKGRpcmVjdGlvbiwgcHJldkN1cnNvckxvY2F0aW9uKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGhhc0hpZ2hsaWdodCgpOiBib29sZWFuIHtcbiAgICBmb3IgKGxldCBpPTAsIGxlbj10aGlzLl9kZXNjZW5kYW50TWVudUxpc3RzLmxlbmd0aDsgaTxsZW47IGkrKykge1xuICAgICAgaWYgKHRoaXMuX2Rlc2NlbmRhbnRNZW51TGlzdHNbaV0uaGFzSGlnaGxpZ2h0KCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9NZW51TGlzdEluc3BlY3Rvci5qcyJdLCJuYW1lcyI6WyJNZW51TGlzdEluc3BlY3RvciIsIl9kZXNjZW5kYW50TWVudUxpc3RzIiwiY29udGV4dCIsIm1lbnVMaXN0SW5zcGVjdG9yIiwicmVnaXN0ZXJNZW51TGlzdCIsIm1lbnVMaXN0IiwicHVzaCIsInVucmVnaXN0ZXJNZW51TGlzdCIsImkiLCJpbmRleE9mIiwiRXJyb3IiLCJzcGxpY2UiLCJkaXNwYXRjaEV2ZW50IiwiZXZlbnQiLCJ0eXBlIiwicHJvcHMiLCJvbkl0ZW1DaG9zZW4iLCJvbkxlZnRQdXNoZWQiLCJvblJpZ2h0UHVzaGVkIiwiY2FuY2VsQnViYmxlIiwicGFyZW50Q3R4IiwiX3BhcmVudEN0eCIsImRpcmVjdGlvbiIsInByZXZDdXJzb3JMb2NhdGlvbiIsIm1vdmVDdXJzb3IiLCJsZW4iLCJsZW5ndGgiLCJoYXNIaWdobGlnaHQiLCJjaGlsZHJlbiIsIlJlYWN0IiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiZnVuYyIsImVsZW1lbnQiLCJjaGlsZENvbnRleHRUeXBlcyIsIm9iamVjdCIsImNvbnRleHRUeXBlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7OztBQUVBOzs7O0FBR0E7Ozs7OztJQWdCcUJBLGlCOzs7Ozs7Ozs7Ozs7OztrT0FpQm5CQyxvQixHQUF3QyxFOzs7OztpQ0FFQTtBQUN0QyxhQUFPLEtBQUtDLE9BQUwsQ0FBYUMsaUJBQXBCO0FBQ0Q7OztzQ0FFeUI7QUFBQTs7QUFDeEIsVUFBTUEsb0JBQThDO0FBQ2xEQywwQkFBa0IsMEJBQUNDLFFBQUQsRUFBd0I7QUFDeEMsaUJBQUtKLG9CQUFMLENBQTBCSyxJQUExQixDQUErQkQsUUFBL0I7QUFDRCxTQUhpRDtBQUlsREUsNEJBQW9CLDRCQUFDRixRQUFELEVBQXdCO0FBQzFDLGNBQU1HLElBQUksT0FBS1Asb0JBQUwsQ0FBMEJRLE9BQTFCLENBQWtDSixRQUFsQyxDQUFWO0FBQ0EsY0FBSUcsSUFBSSxDQUFSLEVBQVcsTUFBTSxJQUFJRSxLQUFKLENBQVUseUJBQVYsQ0FBTjtBQUNYLGlCQUFLVCxvQkFBTCxDQUEwQlUsTUFBMUIsQ0FBaUNILENBQWpDLEVBQW9DLENBQXBDO0FBQ0QsU0FSaUQ7QUFTbERJLHVCQUFlLHVCQUFDQyxLQUFELEVBQXNCO0FBQ25DLGtCQUFRQSxNQUFNQyxJQUFkO0FBQ0EsaUJBQUssUUFBTDtBQUNFO0FBQ0Esa0JBQUksT0FBS0MsS0FBTCxDQUFXQyxZQUFmLEVBQTZCLE9BQUtELEtBQUwsQ0FBV0MsWUFBWCxDQUF3QkgsS0FBeEI7QUFDN0I7QUFDRixpQkFBSyxNQUFMO0FBQ0Usa0JBQUksT0FBS0UsS0FBTCxDQUFXRSxZQUFmLEVBQTZCLE9BQUtGLEtBQUwsQ0FBV0UsWUFBWCxDQUF3QkosS0FBeEI7QUFDN0I7QUFDRixpQkFBSyxPQUFMO0FBQ0Usa0JBQUksT0FBS0UsS0FBTCxDQUFXRyxhQUFmLEVBQThCLE9BQUtILEtBQUwsQ0FBV0csYUFBWCxDQUF5QkwsS0FBekI7QUFDOUI7QUFWRjtBQVlBLGNBQUlBLE1BQU1NLFlBQVYsRUFBd0I7QUFDeEIsY0FBTUMsWUFBWSxPQUFLQyxVQUFMLEVBQWxCO0FBQ0EsY0FBSUQsU0FBSixFQUFlO0FBQ2JBLHNCQUFVUixhQUFWLENBQXdCQyxLQUF4QjtBQUNEO0FBQ0Y7QUEzQmlELE9BQXBEO0FBNkJBLGFBQU8sRUFBQ1Ysb0NBQUQsRUFBUDtBQUNEOzs7K0JBRVVtQixTLEVBQXNCQyxrQixFQUFvQztBQUNuRSxVQUFNbEIsV0FBVyxLQUFLSixvQkFBTCxDQUEwQixDQUExQixDQUFqQjtBQUNBLFVBQUksQ0FBQ0ksUUFBTCxFQUFlO0FBQ2IsZUFBTyxLQUFQO0FBQ0Q7QUFDREEsZUFBU21CLFVBQVQsQ0FBb0JGLFNBQXBCLEVBQStCQyxrQkFBL0I7QUFDQSxhQUFPLElBQVA7QUFDRDs7O21DQUV1QjtBQUN0QixXQUFLLElBQUlmLElBQUUsQ0FBTixFQUFTaUIsTUFBSSxLQUFLeEIsb0JBQUwsQ0FBMEJ5QixNQUE1QyxFQUFvRGxCLElBQUVpQixHQUF0RCxFQUEyRGpCLEdBQTNELEVBQWdFO0FBQzlELFlBQUksS0FBS1Asb0JBQUwsQ0FBMEJPLENBQTFCLEVBQTZCbUIsWUFBN0IsRUFBSixFQUFpRDtBQUMvQyxpQkFBTyxJQUFQO0FBQ0Q7QUFDRjtBQUNELGFBQU8sS0FBUDtBQUNEOzs7NkJBRVE7QUFDUCxhQUFPLEtBQUtaLEtBQUwsQ0FBV2EsUUFBbEI7QUFDRDs7O0VBNUU0Q0MsZ0JBQU1DLFM7O0FBQWhDOUIsaUIsQ0FDWitCLFMsR0FBWTtBQUNqQmYsZ0JBQWNnQixvQkFBVUMsSUFEUDtBQUVqQmhCLGdCQUFjZSxvQkFBVUMsSUFGUDtBQUdqQmYsaUJBQWVjLG9CQUFVQyxJQUhSOztBQUtqQkwsWUFBVUksb0JBQVVFO0FBTEgsQztBQURBbEMsaUIsQ0FTWm1DLGlCLEdBQW9CO0FBQ3pCaEMscUJBQW1CNkIsb0JBQVVJO0FBREosQztBQVRScEMsaUIsQ0FhWnFDLFksR0FBZTtBQUNwQmxDLHFCQUFtQjZCLG9CQUFVSTtBQURULEM7a0JBYkhwQyxpQiIsImZpbGUiOiJNZW51TGlzdEluc3BlY3Rvci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIEBmbG93ICovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7Tm9kZSBhcyBSZWFjdE5vZGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgdHlwZSBNZW51TGlzdCBmcm9tICcuL01lbnVMaXN0JztcbmltcG9ydCB0eXBlIE1lbnVFdmVudCBmcm9tICcuL2V2ZW50cy9NZW51RXZlbnQnO1xuaW1wb3J0IENob3NlbkV2ZW50IGZyb20gJy4vZXZlbnRzL0Nob3NlbkV2ZW50JztcbmltcG9ydCB0eXBlIHtEaXJlY3Rpb24sIFJlY3R9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBNZW51TGlzdEluc3BlY3RvckNvbnRleHQgPSB7XG4gIHJlZ2lzdGVyTWVudUxpc3QobWVudUxpc3Q6IE1lbnVMaXN0KTogdm9pZDtcbiAgdW5yZWdpc3Rlck1lbnVMaXN0KG1lbnVMaXN0OiBNZW51TGlzdCk6IHZvaWQ7XG4gIGRpc3BhdGNoRXZlbnQoZXZlbnQ6IE1lbnVFdmVudCk6IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBQcm9wcyA9IHtcbiAgb25JdGVtQ2hvc2VuPzogPyhldmVudDogQ2hvc2VuRXZlbnQpID0+IHZvaWQ7XG4gIG9uTGVmdFB1c2hlZD86ID8oZXZlbnQ6IE1lbnVFdmVudCkgPT4gdm9pZDtcbiAgb25SaWdodFB1c2hlZD86ID8oZXZlbnQ6IE1lbnVFdmVudCkgPT4gdm9pZDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZW51TGlzdEluc3BlY3RvciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxQcm9wcz4ge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIG9uSXRlbUNob3NlbjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25MZWZ0UHVzaGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvblJpZ2h0UHVzaGVkOiBQcm9wVHlwZXMuZnVuYyxcblxuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMuZWxlbWVudFxuICB9O1xuXG4gIHN0YXRpYyBjaGlsZENvbnRleHRUeXBlcyA9IHtcbiAgICBtZW51TGlzdEluc3BlY3RvcjogUHJvcFR5cGVzLm9iamVjdFxuICB9O1xuXG4gIHN0YXRpYyBjb250ZXh0VHlwZXMgPSB7XG4gICAgbWVudUxpc3RJbnNwZWN0b3I6IFByb3BUeXBlcy5vYmplY3RcbiAgfTtcblxuICBfZGVzY2VuZGFudE1lbnVMaXN0czogQXJyYXk8TWVudUxpc3Q+ID0gW107XG5cbiAgX3BhcmVudEN0eCgpOiA/TWVudUxpc3RJbnNwZWN0b3JDb250ZXh0IHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0Lm1lbnVMaXN0SW5zcGVjdG9yO1xuICB9XG5cbiAgZ2V0Q2hpbGRDb250ZXh0KCk6IE9iamVjdCB7XG4gICAgY29uc3QgbWVudUxpc3RJbnNwZWN0b3I6IE1lbnVMaXN0SW5zcGVjdG9yQ29udGV4dCA9IHtcbiAgICAgIHJlZ2lzdGVyTWVudUxpc3Q6IChtZW51TGlzdDogTWVudUxpc3QpID0+IHtcbiAgICAgICAgdGhpcy5fZGVzY2VuZGFudE1lbnVMaXN0cy5wdXNoKG1lbnVMaXN0KTtcbiAgICAgIH0sXG4gICAgICB1bnJlZ2lzdGVyTWVudUxpc3Q6IChtZW51TGlzdDogTWVudUxpc3QpID0+IHtcbiAgICAgICAgY29uc3QgaSA9IHRoaXMuX2Rlc2NlbmRhbnRNZW51TGlzdHMuaW5kZXhPZihtZW51TGlzdCk7XG4gICAgICAgIGlmIChpIDwgMCkgdGhyb3cgbmV3IEVycm9yKCdNZW51TGlzdCBub3QgcmVnaXN0ZXJlZCcpO1xuICAgICAgICB0aGlzLl9kZXNjZW5kYW50TWVudUxpc3RzLnNwbGljZShpLCAxKTtcbiAgICAgIH0sXG4gICAgICBkaXNwYXRjaEV2ZW50OiAoZXZlbnQ6IE1lbnVFdmVudCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgICAgY2FzZSAnY2hvc2VuJzpcbiAgICAgICAgICAvKjo6IGlmICghKGV2ZW50IGluc3RhbmNlb2YgQ2hvc2VuRXZlbnQpKSB0aHJvdyBuZXcgRXJyb3IoKTsgKi9cbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkl0ZW1DaG9zZW4pIHRoaXMucHJvcHMub25JdGVtQ2hvc2VuKGV2ZW50KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgaWYgKHRoaXMucHJvcHMub25MZWZ0UHVzaGVkKSB0aGlzLnByb3BzLm9uTGVmdFB1c2hlZChldmVudCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJpZ2h0UHVzaGVkKSB0aGlzLnByb3BzLm9uUmlnaHRQdXNoZWQoZXZlbnQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5jYW5jZWxCdWJibGUpIHJldHVybjtcbiAgICAgICAgY29uc3QgcGFyZW50Q3R4ID0gdGhpcy5fcGFyZW50Q3R4KCk7XG4gICAgICAgIGlmIChwYXJlbnRDdHgpIHtcbiAgICAgICAgICBwYXJlbnRDdHguZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB7bWVudUxpc3RJbnNwZWN0b3J9O1xuICB9XG5cbiAgbW92ZUN1cnNvcihkaXJlY3Rpb246IERpcmVjdGlvbiwgcHJldkN1cnNvckxvY2F0aW9uOiA/UmVjdCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG1lbnVMaXN0ID0gdGhpcy5fZGVzY2VuZGFudE1lbnVMaXN0c1swXTtcbiAgICBpZiAoIW1lbnVMaXN0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIG1lbnVMaXN0Lm1vdmVDdXJzb3IoZGlyZWN0aW9uLCBwcmV2Q3Vyc29yTG9jYXRpb24pO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaGFzSGlnaGxpZ2h0KCk6IGJvb2xlYW4ge1xuICAgIGZvciAobGV0IGk9MCwgbGVuPXRoaXMuX2Rlc2NlbmRhbnRNZW51TGlzdHMubGVuZ3RoOyBpPGxlbjsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5fZGVzY2VuZGFudE1lbnVMaXN0c1tpXS5oYXNIaWdobGlnaHQoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICB9XG59XG4iXX0=

@@ -362,2 +362,2 @@ 'use strict';

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9TdWJNZW51SXRlbS5qcyJdLCJuYW1lcyI6WyJTdWJNZW51SXRlbSIsInN0YXRlIiwib3BlbmVkIiwiX3Jlc2V0TW91c2VMZWF2ZVdhdGNoZXIiLCJfc3RvcHBlciIsImRlc3Ryb3kiLCJjYWxsYmFjayIsIl9tZW51SXRlbSIsImxvY2tIaWdobGlnaHQiLCJwcm9wcyIsIm9uV2lsbE9wZW4iLCJzZXRTdGF0ZSIsIm9uRGlkT3BlbiIsInRha2VLZXlib2FyZCIsIm9uV2lsbENsb3NlIiwicmVsZWFzZUtleWJvYXJkIiwidW5sb2NrSGlnaGxpZ2h0IiwiY2xvc2UiLCJvcGVuIiwiX2Zsb2F0QW5jaG9yIiwicmVwb3NpdGlvbiIsImhhc0hpZ2hsaWdodCIsImJ5S2V5Ym9hcmQiLCJoaWdobGlnaHQiLCJ1bmhpZ2hsaWdodCIsImRpcmVjdGlvbiIsInByZXZDdXJzb3JMb2NhdGlvbiIsIm1vdmVDdXJzb3IiLCJoaWdobGlnaHRlZCIsImV2ZW50IiwiZW1pdCIsIk9QRU5fREVMQVkiLCJsYXRlciIsInRha2VVbnRpbEJ5Iiwib25WYWx1ZSIsIm1lbnVSZWN0IiwiX21lbnVDb250YWluZXIiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJzdGFydFRpbWUiLCJEYXRlIiwibm93Iiwic3RhcnRYIiwicGFnZVgiLCJzdGFydFkiLCJwYWdlWSIsImdldERpc3RhbmNlIiwieCIsInkiLCJsZWZ0IiwidG9wIiwicmlnaHQiLCJ3aWR0aCIsImJvdHRvbSIsInN0YXJ0RGlzdGFuY2UiLCJsYXN0Q29vcmRzIiwiTUlOX1NQRUVEIiwiTUFYX1RJTUUiLCJMRUFEX1RJTUUiLCJmcm9tRXZlbnRzIiwid2luZG93IiwiYnVmZmVyQnkiLCJpbnRlcnZhbCIsIm1hcCIsImV2ZW50cyIsImxlbmd0aCIsImxhc3QiLCJmaWx0ZXIiLCJkaXN0YW5jZSIsIm1heERpc3RhbmNlIiwibWVyZ2UiLCJ0YWtlIiwiaW5kZXgiLCJoaWdobGlnaHRlZFN0eWxlIiwiaGlnaGxpZ2h0ZWRDbGFzc05hbWUiLCJwb3NpdGlvbk9wdGlvbnMiLCJtZW51WkluZGV4IiwiY2hpbGRyZW4iLCJtZW51Iiwic3R5bGUiLCJjbGFzc05hbWUiLCJvcGVuZWRTdHlsZSIsIm9wZW5lZENsYXNzTmFtZSIsImVsIiwiaCIsImUiLCJfb25IaWdobGlnaHRDaGFuZ2UiLCJfb25Nb3VzZUxlYXZlSXRlbSIsInN0b3BQcm9wYWdhdGlvbiIsInByZXZlbnREZWZhdWx0IiwiX21lbnVJbnNwZWN0b3IiLCJfbW91c2VFbnRlck1lbnUiLCJDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJub2RlIiwib2JqZWN0Iiwib25lT2ZUeXBlIiwic3RyaW5nIiwibnVtYmVyIiwiZnVuYyIsIm9uSXRlbUNob3NlbiIsIm9uSGlnaGxpZ2h0Q2hhbmdlIiwiZGVmYXVsdFByb3BzIiwicG9zaXRpb24iLCJ2QWxpZ24iLCJoQWxpZ24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOzs7O0FBQ0E7Ozs7QUFFQTs7OztBQUNBOzs7O0FBRUE7Ozs7QUFDQTs7OztBQUVBOzs7O0FBQ0E7Ozs7QUFFQTs7Ozs7O0lBa0NxQkEsVzs7Ozs7Ozs7Ozs7Ozs7c05BNkJuQkMsSyxHQUFlO0FBQ2JDLGNBQVE7QUFESyxLLFFBUWZDLHVCLEdBQXFDLHlCLFFBQ3JDQyxRLEdBQVcsNkI7Ozs7OzJDQUVZO0FBQ3JCLFdBQUtBLFFBQUwsQ0FBY0MsT0FBZDtBQUNEOzs7eUJBRUlDLFEsRUFBc0I7QUFBQTs7QUFDekIsV0FBS0MsU0FBTCxDQUFlQyxhQUFmO0FBQ0EsVUFBSSxLQUFLUCxLQUFMLENBQVdDLE1BQWYsRUFBdUI7QUFDdkIsVUFBSSxLQUFLTyxLQUFMLENBQVdDLFVBQWYsRUFBMkIsS0FBS0QsS0FBTCxDQUFXQyxVQUFYO0FBQzNCLFdBQUtDLFFBQUwsQ0FBYyxFQUFDVCxRQUFRLElBQVQsRUFBZCxFQUE4QixZQUFNO0FBQ2xDLFlBQUksT0FBS08sS0FBTCxDQUFXRyxTQUFmLEVBQTBCLE9BQUtILEtBQUwsQ0FB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Q0FDWjRGLFMsR0FBWTtBQUNqQmYsUUFBTSxvQkFBVWdCLElBREM7QUFFakJuQixtQkFBaUIsb0JBQVVvQixNQUZWO0FBR2pCbkIsY0FBWSxvQkFBVW9CLFNBQVYsQ0FBb0IsQ0FBQyxvQkFBVUMsTUFBWCxFQUFtQixvQkFBVUMsTUFBN0IsQ0FBcEIsQ0FISzs7QUFLakJ2RixjQUFZLG9CQUFVd0YsSUFMTDtBQU1qQnRGLGFBQVcsb0JBQVVzRixJQU5KO0FBT2pCcEYsZUFBYSxvQkFBVW9GLElBUE47O0FBU2pCbkIsYUFBVyxvQkFBVWlCLE1BVEo7QUFVakJsQixTQUFPLG9CQUFVZ0IsTUFWQTtBQVdqQnJCLHdCQUFzQixvQkFBVXVCLE1BWGY7QUFZakJ4QixvQkFBa0Isb0JBQVVzQixNQVpYO0FBYWpCdkIsU0FBTyxvQkFBVTBCLE1BYkE7O0FBZWpCaEIsbUJBQWlCLG9CQUFVZSxNQWZWO0FBZ0JqQmhCLGVBQWEsb0JBQVVjLE1BaEJOOztBQWtCakJLLGdCQUFjLG9CQUFVRCxJQWxCUDtBQW1CakJFLHFCQUFtQixvQkFBVUYsSUFuQlo7O0FBcUJqQnRCLFlBQVUsb0JBQVVpQjtBQXJCSCxDO0FBREE3RixXLENBeUJacUcsWSxHQUFlO0FBQ3BCM0IsbUJBQWlCLEVBQUM0QixVQUFTLE9BQVYsRUFBbUJDLFFBQU8sS0FBMUIsRUFBaUNDLFFBQVEsTUFBekM7QUFERyxDO2tCQXpCSHhHLFciLCJmaWxlIjoiU3ViTWVudUl0ZW0uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBAZmxvdyAqL1xuXG5pbXBvcnQgS2VmaXIgZnJvbSAna2VmaXInO1xuaW1wb3J0IGtlZmlyQnVzIGZyb20gJ2tlZmlyLWJ1cyc7XG5pbXBvcnQgdHlwZSB7QnVzfSBmcm9tICdrZWZpci1idXMnO1xuaW1wb3J0IGtlZmlyU3RvcHBlciBmcm9tICdrZWZpci1zdG9wcGVyJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7Tm9kZSBhcyBSZWFjdE5vZGUsIEVsZW1lbnQgYXMgUmVhY3RFbGVtZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHBvaW50UmVjdERpc3RhbmNlIGZyb20gJy4vbGliL3BvaW50UmVjdERpc3RhbmNlJztcblxuaW1wb3J0IE1lbnVMaXN0SW5zcGVjdG9yIGZyb20gJy4vTWVudUxpc3RJbnNwZWN0b3InO1xuaW1wb3J0IEZsb2F0QW5jaG9yIGZyb20gJ3JlYWN0LWZsb2F0LWFuY2hvcic7XG5pbXBvcnQgdHlwZSB7T3B0aW9ucyBhcyBGbG9hdEFuY2hvck9wdGlvbnN9IGZyb20gJ3JlYWN0LWZsb2F0LWFuY2hvcic7XG5pbXBvcnQgTWVudUl0ZW0gZnJvbSAnLi9NZW51SXRlbSc7XG5cbmltcG9ydCB0eXBlIHtEaXJlY3Rpb24sIFJlY3R9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHR5cGUgTWVudUV2ZW50IGZyb20gJy4vZXZlbnRzL01lbnVFdmVudCc7XG5pbXBvcnQgdHlwZSBDaG9zZW5FdmVudCBmcm9tICcuL2V2ZW50cy9DaG9zZW5FdmVudCc7XG5cbnR5cGUgU3RhdGUgPSB7XG4gIG9wZW5lZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFByb3BzID0ge1xuICBtZW51PzogUmVhY3RFbGVtZW50PGFueT47XG4gIHBvc2l0aW9uT3B0aW9uczogRmxvYXRBbmNob3JPcHRpb25zO1xuICBtZW51WkluZGV4PzogP3N0cmluZ3xudW1iZXI7XG5cbiAgb25XaWxsT3Blbj86ID8oKSA9PiB2b2lkO1xuICBvbkRpZE9wZW4/OiA/KCkgPT4gdm9pZDtcbiAgb25XaWxsQ2xvc2U/OiA/KCkgPT4gdm9pZDtcblxuICBjbGFzc05hbWU/OiA/c3RyaW5nO1xuICBzdHlsZT86ID9PYmplY3Q7XG4gIGhpZ2hsaWdodGVkQ2xhc3NOYW1lPzogP3N0cmluZztcbiAgaGlnaGxpZ2h0ZWRTdHlsZT86ID9PYmplY3Q7XG4gIGluZGV4PzogP251bWJlcjtcblxuICBvcGVuZWRDbGFzc05hbWU/OiA/c3RyaW5nO1xuICBvcGVuZWRTdHlsZT86ID9PYmplY3Q7XG5cbiAgb25JdGVtQ2hvc2VuPzogPyhldmVudDogQ2hvc2VuRXZlbnQpID0+IHZvaWQ7XG4gIG9uSGlnaGxpZ2h0Q2hhbmdlPzogPyhoaWdobGlnaHRlZDogYm9vbGVhbiwgZGV0YWlsczoge2J5S2V5Ym9hcmQ6ID9ib29sZWFuLCBwcmV2Q3Vyc29yTG9jYXRpb246ID9SZWN0LCBkaXJlY3Rpb246ID9EaXJlY3Rpb259KSA9PiB2b2lkO1xuXG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3ViTWVudUl0ZW0gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8UHJvcHMsIFN0YXRlPiB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgbWVudTogUHJvcFR5cGVzLm5vZGUsXG4gICAgcG9zaXRpb25PcHRpb25zOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG1lbnVaSW5kZXg6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5udW1iZXJdKSxcblxuICAgIG9uV2lsbE9wZW46IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uRGlkT3BlbjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25XaWxsQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGhpZ2hsaWdodGVkQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGhpZ2hsaWdodGVkU3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgaW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgICBvcGVuZWRDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb3BlbmVkU3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG5cbiAgICBvbkl0ZW1DaG9zZW46IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uSGlnaGxpZ2h0Q2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcblxuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZVxuICB9O1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgcG9zaXRpb25PcHRpb25zOiB7cG9zaXRpb246J3JpZ2h0JywgdkFsaWduOid0b3AnLCBoQWxpZ246ICdsZWZ0J31cbiAgfTtcblxuICBzdGF0ZTogU3RhdGUgPSB7XG4gICAgb3BlbmVkOiBmYWxzZVxuICB9O1xuXG4gIF9tZW51SXRlbTogTWVudUl0ZW07XG4gIF9tZW51SW5zcGVjdG9yOiBNZW51TGlzdEluc3BlY3RvcjtcbiAgX21lbnVDb250YWluZXI6IEhUTUxFbGVtZW50O1xuICBfZmxvYXRBbmNob3I6IEZsb2F0QW5jaG9yO1xuICBfcmVzZXRNb3VzZUxlYXZlV2F0Y2hlcjogQnVzPG51bGw+ID0ga2VmaXJCdXMoKTtcbiAgX3N0b3BwZXIgPSBrZWZpclN0b3BwZXIoKTtcblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLl9zdG9wcGVyLmRlc3Ryb3koKTtcbiAgfVxuXG4gIG9wZW4oY2FsbGJhY2s/OiAoKSA9PiBhbnkpIHtcbiAgICB0aGlzLl9tZW51SXRlbS5sb2NrSGlnaGxpZ2h0KCk7XG4gICAgaWYgKHRoaXMuc3RhdGUub3BlbmVkKSByZXR1cm47XG4gICAgaWYgKHRoaXMucHJvcHMub25XaWxsT3BlbikgdGhpcy5wcm9wcy5vbldpbGxPcGVuKCk7XG4gICAgdGhpcy5zZXRTdGF0ZSh7b3BlbmVkOiB0cnVlfSwgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvcHMub25EaWRPcGVuKSB0aGlzLnByb3BzLm9uRGlkT3BlbigpO1xuICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpO1xuICAgIH0pO1xuICAgIHRoaXMuX21lbnVJdGVtLnRha2VLZXlib2FyZCgpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgaWYgKCF0aGlzLnN0YXRlLm9wZW5lZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLnByb3BzLm9uV2lsbENsb3NlKSB0aGlzLnByb3BzLm9uV2lsbENsb3NlKCk7XG4gICAgdGhpcy5zZXRTdGF0ZSh7b3BlbmVkOiBmYWxzZX0pO1xuICAgIHRoaXMuX21lbnVJdGVtLnJlbGVhc2VLZXlib2FyZCgpO1xuICAgIHRoaXMuX21lbnVJdGVtLnVubG9ja0hpZ2hsaWdodCgpO1xuICB9XG5cbiAgdG9nZ2xlKCkge1xuICAgIGlmICh0aGlzLnN0YXRlLm9wZW5lZCkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG4gIH1cblxuICByZXBvc2l0aW9uKCkge1xuICAgIHRoaXMuX2Zsb2F0QW5jaG9yLnJlcG9zaXRpb24oKTtcbiAgfVxuXG4gIGhhc0hpZ2hsaWdodCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbWVudUl0ZW0uaGFzSGlnaGxpZ2h0KCk7XG4gIH1cblxuICBoaWdobGlnaHQoYnlLZXlib2FyZDogYm9vbGVhbj10cnVlKSB7XG4gICAgdGhpcy5fbWVudUl0ZW0uaGlnaGxpZ2h0KGJ5S2V5Ym9hcmQpO1xuICB9XG5cbiAgdW5oaWdobGlnaHQoKSB7XG4gICAgdGhpcy5fbWVudUl0ZW0udW5oaWdobGlnaHQoKTtcbiAgfVxuXG4gIG1vdmVDdXJzb3IoZGlyZWN0aW9uOiBEaXJlY3Rpb24sIHByZXZDdXJzb3JMb2NhdGlvbjogP1JlY3QpIHtcbiAgICB0aGlzLl9tZW51SXRlbS5tb3ZlQ3Vyc29yKGRpcmVjdGlvbiwgcHJldkN1cnNvckxvY2F0aW9uKTtcbiAgfVxuXG4gIF9vbkhpZ2hsaWdodENoYW5nZShoaWdobGlnaHRlZDogYm9vbGVhbiwgZXZlbnQ6IE9iamVjdCkge1xuICAgIHRoaXMuX3Jlc2V0TW91c2VMZWF2ZVdhdGNoZXIuZW1pdChudWxsKTtcblxuICAgIGlmIChoaWdobGlnaHRlZCAmJiAhZXZlbnQuYnlLZXlib2FyZCkge1xuICAgICAgY29uc3QgT1BFTl9ERUxBWSA9IDIwMDtcblxuICAgICAgS2VmaXIubGF0ZXIoT1BFTl9ERUxBWSlcbiAgICAgICAgLnRha2VVbnRpbEJ5KHRoaXMuX3Jlc2V0TW91c2VMZWF2ZVdhdGNoZXIpXG4gICAgICAgIC50YWtlVW50aWxCeSh0aGlzLl9zdG9wcGVyKVxuICAgICAgICAub25WYWx1ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoIWhpZ2hsaWdodGVkKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgX29uTW91c2VMZWF2ZUl0ZW0oZXZlbnQ6IE9iamVjdCkge1xuICAgIGlmICghdGhpcy5zdGF0ZS5vcGVuZWQpIHtcbiAgICAgIHRoaXMuX21lbnVJdGVtLnVuaGlnaGxpZ2h0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIG1vdXNlIGlzbid0IGdvaW5nIHRvd2FyZCB0aGUgbWVudSwgdGhlbiB1bmhpZ2hsaWdodCBvdXJzZWxmLlxuXG4gICAgY29uc3QgbWVudVJlY3QgPSB0aGlzLl9tZW51Q29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzdGFydFggPSBldmVudC5wYWdlWCwgc3RhcnRZID0gZXZlbnQucGFnZVk7XG5cbiAgICBmdW5jdGlvbiBnZXREaXN0YW5jZSh4LCB5KSB7XG4gICAgICByZXR1cm4gcG9pbnRSZWN0RGlzdGFuY2UoeCwgeSwgbWVudVJlY3QubGVmdCwgbWVudVJlY3QudG9wLCBtZW51UmVjdC5yaWdodC1tZW51UmVjdC53aWR0aCwgbWVudVJlY3QuYm90dG9tLW1lbnVSZWN0LnRvcCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnREaXN0YW5jZSA9IGdldERpc3RhbmNlKHN0YXJ0WCwgc3RhcnRZKTtcbiAgICBsZXQgbGFzdENvb3JkcyA9IHtwYWdlWDogc3RhcnRYLCBwYWdlWTogc3RhcnRZfTtcblxuICAgIC8vIHBpeGVscyBwZXIgc2Vjb25kIHRoZSB1c2VyIG11c3QgYmUgbW92aW5nIHRoZSBtb3VzZSB0b3dhcmQgdGhlIG1lbnUgZm9yXG4gICAgLy8gdGhlIG1lbnUgdG8gc3RheSBvcGVuLlxuICAgIGNvbnN0IE1JTl9TUEVFRCA9IDYwO1xuXG4gICAgLy8gbXMgYmVmb3JlIHRoZSBtZW51IHdpbGwgY2xvc2UgaWYgdGhlIHVzZXIgaGFzbid0IHJlYWNoZWQgaXQgeWV0LCBub1xuICAgIC8vIG1hdHRlciBob3cgdGhleSdyZSBtb3ZpbmcgdGhlIGN1cnNvciB0b3dhcmQgaXQuXG4gICAgY29uc3QgTUFYX1RJTUUgPSA3NTA7XG5cbiAgICAvLyBtcyB0byBvZmZzZXQgc3RhcnQgdGltZSwgdG8gc2V0IG1heERpc3RhbmNlIGJhY2sgYSBsaXR0bGUgc28gaXQncyBub3Qgc29cbiAgICAvLyB1bmZvcmdpdmluZyBhdCB0aGUgdmVyeSBzdGFydC5cbiAgICBjb25zdCBMRUFEX1RJTUUgPSA1MDtcblxuICAgIC8vIExpc3RlbiB0byBtb3VzZSBtb3ZlcywgZmluZCB0aGUgZmlyc3QgZXZlbnQgbm90IGdvaW5nIHRvd2FyZHMgdGhlIG1lbnUsXG4gICAgLy8gYW5kIGVuZCBpdCB0aGVyZS4gT3IgZW5kIGFmdGVyIGEgdGltZXIuXG4gICAgS2VmaXIuZnJvbUV2ZW50cyh3aW5kb3csICdtb3VzZW1vdmUnKVxuICAgICAgLmJ1ZmZlckJ5KEtlZmlyLmludGVydmFsKDYwLCBudWxsKSlcbiAgICAgIC5tYXAoZXZlbnRzID0+IHtcbiAgICAgICAgaWYgKGV2ZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBsYXN0ID0gZXZlbnRzW2V2ZW50cy5sZW5ndGgtMV07XG4gICAgICAgICAgbGFzdENvb3JkcyA9IHtwYWdlWDogbGFzdC5wYWdlWCwgcGFnZVk6IGxhc3QucGFnZVl9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsYXN0Q29vcmRzO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKHtwYWdlWCwgcGFnZVl9KSA9PiB7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlID0gZ2V0RGlzdGFuY2UocGFnZVgsIHBhZ2VZKTtcbiAgICAgICAgY29uc3QgbWF4RGlzdGFuY2UgPSBzdGFydERpc3RhbmNlIC0gKERhdGUubm93KCktc3RhcnRUaW1lLUxFQURfVElNRSkvMTAwMCAqIE1JTl9TUEVFRDtcbiAgICAgICAgcmV0dXJuIGRpc3RhbmNlID4gbWF4RGlzdGFuY2U7XG4gICAgICB9KVxuICAgICAgLm1lcmdlKEtlZmlyLmxhdGVyKE1BWF9USU1FKjEwMDApKVxuICAgICAgLnRha2UoMSlcbiAgICAgIC50YWtlVW50aWxCeSh0aGlzLl9yZXNldE1vdXNlTGVhdmVXYXRjaGVyKVxuICAgICAgLnRha2VVbnRpbEJ5KHRoaXMuX3N0b3BwZXIpXG4gICAgICAub25WYWx1ZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5fbWVudUl0ZW0udW5oaWdobGlnaHQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgX21vdXNlRW50ZXJNZW51KCkge1xuICAgIHRoaXMuX3Jlc2V0TW91c2VMZWF2ZVdhdGNoZXIuZW1pdChudWxsKTtcbiAgICB0aGlzLl9tZW51SXRlbS51bmxvY2tIaWdobGlnaHQoKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBpbmRleCwgaGlnaGxpZ2h0ZWRTdHlsZSwgaGlnaGxpZ2h0ZWRDbGFzc05hbWUsXG4gICAgICBwb3NpdGlvbk9wdGlvbnMsIG1lbnVaSW5kZXgsIGNoaWxkcmVuLCBtZW51XG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge29wZW5lZH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgbGV0IHN0eWxlID0gdGhpcy5wcm9wcy5zdHlsZTtcbiAgICBsZXQgY2xhc3NOYW1lID0gdGhpcy5wcm9wcy5jbGFzc05hbWU7XG4gICAgaWYgKG9wZW5lZCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMub3BlbmVkU3R5bGUpIHtcbiAgICAgICAgc3R5bGUgPSB7Li4uc3R5bGUsIC4uLnRoaXMucHJvcHMub3BlbmVkU3R5bGV9O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucHJvcHMub3BlbmVkQ2xhc3NOYW1lKSB7XG4gICAgICAgIGNsYXNzTmFtZSA9IGAke2NsYXNzTmFtZXx8Jyd9ICR7dGhpcy5wcm9wcy5vcGVuZWRDbGFzc05hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEZsb2F0QW5jaG9yXG4gICAgICAgIHJlZj17ZWwgPT4ge1xuICAgICAgICAgIGlmIChlbCkgdGhpcy5fZmxvYXRBbmNob3IgPSBlbDtcbiAgICAgICAgfX1cbiAgICAgICAgb3B0aW9ucz17cG9zaXRpb25PcHRpb25zfVxuICAgICAgICB6SW5kZXg9e21lbnVaSW5kZXh9XG4gICAgICAgIGFuY2hvcj17XG4gICAgICAgICAgPE1lbnVJdGVtXG4gICAgICAgICAgICByZWY9e2VsID0+IHtcbiAgICAgICAgICAgICAgaWYgKGVsKSB0aGlzLl9tZW51SXRlbSA9IGVsO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgICAgICAgaGlnaGxpZ2h0ZWRTdHlsZT17aGlnaGxpZ2h0ZWRTdHlsZX1cbiAgICAgICAgICAgIGhpZ2hsaWdodGVkQ2xhc3NOYW1lPXtoaWdobGlnaHRlZENsYXNzTmFtZX1cbiAgICAgICAgICAgIG9uSGlnaGxpZ2h0Q2hhbmdlPXsoaCxlKSA9PiB0aGlzLl9vbkhpZ2hsaWdodENoYW5nZShoLGUpfVxuICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXtlID0+IHRoaXMuX29uTW91c2VMZWF2ZUl0ZW0oZSl9XG4gICAgICAgICAgICBvblJpZ2h0UHVzaGVkPXsoZTogTWVudUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmICghdGhpcy5zdGF0ZS5vcGVuZWQpIHtcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9tZW51SW5zcGVjdG9yLm1vdmVDdXJzb3IoJ2Rvd24nKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uSXRlbUNob3Nlbj17KGU6IENob3NlbkV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgICAgICAgIGlmIChlLmJ5S2V5Ym9hcmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tZW51SW5zcGVjdG9yLm1vdmVDdXJzb3IoJ2Rvd24nKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9e3RydWV9XG4gICAgICAgICAgICBhcmlhLWV4cGFuZGVkPXtvcGVuZWR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgIH1cbiAgICAgICAgZmxvYXQ9e1xuICAgICAgICAgICFvcGVuZWQgPyBudWxsIDpcbiAgICAgICAgICAgIDxNZW51TGlzdEluc3BlY3RvclxuICAgICAgICAgICAgICByZWY9e2VsID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZWwpIHRoaXMuX21lbnVJbnNwZWN0b3IgPSBlbDtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb25MZWZ0UHVzaGVkPXtlID0+IHtcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICByZWY9e2VsID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChlbCkgdGhpcy5fbWVudUNvbnRhaW5lciA9IGVsO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKT0+dGhpcy5fbW91c2VFbnRlck1lbnUoKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHttZW51fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvTWVudUxpc3RJbnNwZWN0b3I+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9TdWJNZW51SXRlbS5qcyJdLCJuYW1lcyI6WyJTdWJNZW51SXRlbSIsInN0YXRlIiwib3BlbmVkIiwiX3Jlc2V0TW91c2VMZWF2ZVdhdGNoZXIiLCJfc3RvcHBlciIsImRlc3Ryb3kiLCJjYWxsYmFjayIsIl9tZW51SXRlbSIsImxvY2tIaWdobGlnaHQiLCJwcm9wcyIsIm9uV2lsbE9wZW4iLCJzZXRTdGF0ZSIsIm9uRGlkT3BlbiIsInRha2VLZXlib2FyZCIsIm9uV2lsbENsb3NlIiwicmVsZWFzZUtleWJvYXJkIiwidW5sb2NrSGlnaGxpZ2h0IiwiY2xvc2UiLCJvcGVuIiwiX2Zsb2F0QW5jaG9yIiwicmVwb3NpdGlvbiIsImhhc0hpZ2hsaWdodCIsImJ5S2V5Ym9hcmQiLCJoaWdobGlnaHQiLCJ1bmhpZ2hsaWdodCIsImRpcmVjdGlvbiIsInByZXZDdXJzb3JMb2NhdGlvbiIsIm1vdmVDdXJzb3IiLCJoaWdobGlnaHRlZCIsImV2ZW50IiwiZW1pdCIsIk9QRU5fREVMQVkiLCJLZWZpciIsImxhdGVyIiwidGFrZVVudGlsQnkiLCJvblZhbHVlIiwibWVudVJlY3QiLCJfbWVudUNvbnRhaW5lciIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInN0YXJ0VGltZSIsIkRhdGUiLCJub3ciLCJzdGFydFgiLCJwYWdlWCIsInN0YXJ0WSIsInBhZ2VZIiwiZ2V0RGlzdGFuY2UiLCJ4IiwieSIsImxlZnQiLCJ0b3AiLCJyaWdodCIsIndpZHRoIiwiYm90dG9tIiwic3RhcnREaXN0YW5jZSIsImxhc3RDb29yZHMiLCJNSU5fU1BFRUQiLCJNQVhfVElNRSIsIkxFQURfVElNRSIsImZyb21FdmVudHMiLCJ3aW5kb3ciLCJidWZmZXJCeSIsImludGVydmFsIiwibWFwIiwiZXZlbnRzIiwibGVuZ3RoIiwibGFzdCIsImZpbHRlciIsImRpc3RhbmNlIiwibWF4RGlzdGFuY2UiLCJtZXJnZSIsInRha2UiLCJpbmRleCIsImhpZ2hsaWdodGVkU3R5bGUiLCJoaWdobGlnaHRlZENsYXNzTmFtZSIsInBvc2l0aW9uT3B0aW9ucyIsIm1lbnVaSW5kZXgiLCJjaGlsZHJlbiIsIm1lbnUiLCJzdHlsZSIsImNsYXNzTmFtZSIsIm9wZW5lZFN0eWxlIiwib3BlbmVkQ2xhc3NOYW1lIiwiZWwiLCJoIiwiZSIsIl9vbkhpZ2hsaWdodENoYW5nZSIsIl9vbk1vdXNlTGVhdmVJdGVtIiwic3RvcFByb3BhZ2F0aW9uIiwicHJldmVudERlZmF1bHQiLCJfbWVudUluc3BlY3RvciIsIl9tb3VzZUVudGVyTWVudSIsIlJlYWN0IiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwibm9kZSIsIm9iamVjdCIsIm9uZU9mVHlwZSIsInN0cmluZyIsIm51bWJlciIsImZ1bmMiLCJvbkl0ZW1DaG9zZW4iLCJvbkhpZ2hsaWdodENoYW5nZSIsImRlZmF1bHRQcm9wcyIsInBvc2l0aW9uIiwidkFsaWduIiwiaEFsaWduIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7OztBQUNBOzs7O0FBRUE7Ozs7QUFDQTs7OztBQUVBOzs7O0FBQ0E7Ozs7QUFFQTs7OztBQUNBOzs7O0FBRUE7Ozs7OztJQWtDcUJBLFc7Ozs7Ozs7Ozs7Ozs7O3NOQTZCbkJDLEssR0FBZTtBQUNiQyxjQUFRO0FBREssSyxRQVFmQyx1QixHQUFxQyx5QixRQUNyQ0MsUSxHQUFXLDZCOzs7OzsyQ0FFWTtBQUNyQixXQUFLQSxRQUFMLENBQWNDLE9BQWQ7QUFDRDs7O3lCQUVJQyxRLEVBQXNCO0FBQUE7O0FBQ3pCLFdBQUtDLFNBQUwsQ0FBZUMsYUFBZjtBQUNBLFVBQUksS0FBS1AsS0FBTCxDQUFXQyxNQUFmLEVBQXVCO0FBQ3ZCLFVBQUksS0FBS08sS0FBTCxDQUFXQyxVQUFmLEVBQTJCLEtBQUtELEtBQUwsQ0FBV0MsVUFBWDtBQUMzQixXQUFLQyxRQUFMLENBQWMsRUFBQ1QsUUFBUSxJQUFULEVBQWQsRUFBOEIsWUFBTTtBQUNsQyxZQUFJLE9BQUtPLEtBQUwsQ0FB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QU1HYjtBQU5IO0FBVkY7QUExQ04sUUFERjtBQWlFRDs7O0VBOVBzQ2MsZ0JBQU1DLFM7O0FBQTFCN0YsVyxDQUNaOEYsUyxHQUFZO0FBQ2pCaEIsUUFBTWlCLG9CQUFVQyxJQURDO0FBRWpCckIsbUJBQWlCb0Isb0JBQVVFLE1BRlY7QUFHakJyQixjQUFZbUIsb0JBQVVHLFNBQVYsQ0FBb0IsQ0FBQ0gsb0JBQVVJLE1BQVgsRUFBbUJKLG9CQUFVSyxNQUE3QixDQUFwQixDQUhLOztBQUtqQjFGLGNBQVlxRixvQkFBVU0sSUFMTDtBQU1qQnpGLGFBQVdtRixvQkFBVU0sSUFOSjtBQU9qQnZGLGVBQWFpRixvQkFBVU0sSUFQTjs7QUFTakJyQixhQUFXZSxvQkFBVUksTUFUSjtBQVVqQnBCLFNBQU9nQixvQkFBVUUsTUFWQTtBQVdqQnZCLHdCQUFzQnFCLG9CQUFVSSxNQVhmO0FBWWpCMUIsb0JBQWtCc0Isb0JBQVVFLE1BWlg7QUFhakJ6QixTQUFPdUIsb0JBQVVLLE1BYkE7O0FBZWpCbEIsbUJBQWlCYSxvQkFBVUksTUFmVjtBQWdCakJsQixlQUFhYyxvQkFBVUUsTUFoQk47O0FBa0JqQkssZ0JBQWNQLG9CQUFVTSxJQWxCUDtBQW1CakJFLHFCQUFtQlIsb0JBQVVNLElBbkJaOztBQXFCakJ4QixZQUFVa0Isb0JBQVVDO0FBckJILEM7QUFEQWhHLFcsQ0F5Qlp3RyxZLEdBQWU7QUFDcEI3QixtQkFBaUIsRUFBQzhCLFVBQVMsT0FBVixFQUFtQkMsUUFBTyxLQUExQixFQUFpQ0MsUUFBUSxNQUF6QztBQURHLEM7a0JBekJIM0csVyIsImZpbGUiOiJTdWJNZW51SXRlbS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIEBmbG93ICovXG5cbmltcG9ydCBLZWZpciBmcm9tICdrZWZpcic7XG5pbXBvcnQga2VmaXJCdXMgZnJvbSAna2VmaXItYnVzJztcbmltcG9ydCB0eXBlIHtCdXN9IGZyb20gJ2tlZmlyLWJ1cyc7XG5pbXBvcnQga2VmaXJTdG9wcGVyIGZyb20gJ2tlZmlyLXN0b3BwZXInO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtOb2RlIGFzIFJlYWN0Tm9kZSwgRWxlbWVudCBhcyBSZWFjdEVsZW1lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgcG9pbnRSZWN0RGlzdGFuY2UgZnJvbSAnLi9saWIvcG9pbnRSZWN0RGlzdGFuY2UnO1xuXG5pbXBvcnQgTWVudUxpc3RJbnNwZWN0b3IgZnJvbSAnLi9NZW51TGlzdEluc3BlY3Rvcic7XG5pbXBvcnQgRmxvYXRBbmNob3IgZnJvbSAncmVhY3QtZmxvYXQtYW5jaG9yJztcbmltcG9ydCB0eXBlIHtPcHRpb25zIGFzIEZsb2F0QW5jaG9yT3B0aW9uc30gZnJvbSAncmVhY3QtZmxvYXQtYW5jaG9yJztcbmltcG9ydCBNZW51SXRlbSBmcm9tICcuL01lbnVJdGVtJztcblxuaW1wb3J0IHR5cGUge0RpcmVjdGlvbiwgUmVjdH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgdHlwZSBNZW51RXZlbnQgZnJvbSAnLi9ldmVudHMvTWVudUV2ZW50JztcbmltcG9ydCB0eXBlIENob3NlbkV2ZW50IGZyb20gJy4vZXZlbnRzL0Nob3NlbkV2ZW50JztcblxudHlwZSBTdGF0ZSA9IHtcbiAgb3BlbmVkOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgUHJvcHMgPSB7XG4gIG1lbnU/OiBSZWFjdEVsZW1lbnQ8YW55PjtcbiAgcG9zaXRpb25PcHRpb25zOiBGbG9hdEFuY2hvck9wdGlvbnM7XG4gIG1lbnVaSW5kZXg/OiA/c3RyaW5nfG51bWJlcjtcblxuICBvbldpbGxPcGVuPzogPygpID0+IHZvaWQ7XG4gIG9uRGlkT3Blbj86ID8oKSA9PiB2b2lkO1xuICBvbldpbGxDbG9zZT86ID8oKSA9PiB2b2lkO1xuXG4gIGNsYXNzTmFtZT86ID9zdHJpbmc7XG4gIHN0eWxlPzogP09iamVjdDtcbiAgaGlnaGxpZ2h0ZWRDbGFzc05hbWU/OiA/c3RyaW5nO1xuICBoaWdobGlnaHRlZFN0eWxlPzogP09iamVjdDtcbiAgaW5kZXg/OiA/bnVtYmVyO1xuXG4gIG9wZW5lZENsYXNzTmFtZT86ID9zdHJpbmc7XG4gIG9wZW5lZFN0eWxlPzogP09iamVjdDtcblxuICBvbkl0ZW1DaG9zZW4/OiA/KGV2ZW50OiBDaG9zZW5FdmVudCkgPT4gdm9pZDtcbiAgb25IaWdobGlnaHRDaGFuZ2U/OiA/KGhpZ2hsaWdodGVkOiBib29sZWFuLCBkZXRhaWxzOiB7YnlLZXlib2FyZDogP2Jvb2xlYW4sIHByZXZDdXJzb3JMb2NhdGlvbjogP1JlY3QsIGRpcmVjdGlvbjogP0RpcmVjdGlvbn0pID0+IHZvaWQ7XG5cbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdWJNZW51SXRlbSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxQcm9wcywgU3RhdGU+IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBtZW51OiBQcm9wVHlwZXMubm9kZSxcbiAgICBwb3NpdGlvbk9wdGlvbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgbWVudVpJbmRleDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm51bWJlcl0pLFxuXG4gICAgb25XaWxsT3BlbjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25EaWRPcGVuOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbldpbGxDbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgaGlnaGxpZ2h0ZWRDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgaGlnaGxpZ2h0ZWRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBpbmRleDogUHJvcFR5cGVzLm51bWJlcixcblxuICAgIG9wZW5lZENsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBvcGVuZWRTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcblxuICAgIG9uSXRlbUNob3NlbjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25IaWdobGlnaHRDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBwb3NpdGlvbk9wdGlvbnM6IHtwb3NpdGlvbjoncmlnaHQnLCB2QWxpZ246J3RvcCcsIGhBbGlnbjogJ2xlZnQnfVxuICB9O1xuXG4gIHN0YXRlOiBTdGF0ZSA9IHtcbiAgICBvcGVuZWQ6IGZhbHNlXG4gIH07XG5cbiAgX21lbnVJdGVtOiBNZW51SXRlbTtcbiAgX21lbnVJbnNwZWN0b3I6IE1lbnVMaXN0SW5zcGVjdG9yO1xuICBfbWVudUNvbnRhaW5lcjogSFRNTEVsZW1lbnQ7XG4gIF9mbG9hdEFuY2hvcjogRmxvYXRBbmNob3I7XG4gIF9yZXNldE1vdXNlTGVhdmVXYXRjaGVyOiBCdXM8bnVsbD4gPSBrZWZpckJ1cygpO1xuICBfc3RvcHBlciA9IGtlZmlyU3RvcHBlcigpO1xuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMuX3N0b3BwZXIuZGVzdHJveSgpO1xuICB9XG5cbiAgb3BlbihjYWxsYmFjaz86ICgpID0+IGFueSkge1xuICAgIHRoaXMuX21lbnVJdGVtLmxvY2tIaWdobGlnaHQoKTtcbiAgICBpZiAodGhpcy5zdGF0ZS5vcGVuZWQpIHJldHVybjtcbiAgICBpZiAodGhpcy5wcm9wcy5vbldpbGxPcGVuKSB0aGlzLnByb3BzLm9uV2lsbE9wZW4oKTtcbiAgICB0aGlzLnNldFN0YXRlKHtvcGVuZWQ6IHRydWV9LCAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5vbkRpZE9wZW4pIHRoaXMucHJvcHMub25EaWRPcGVuKCk7XG4gICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG4gICAgfSk7XG4gICAgdGhpcy5fbWVudUl0ZW0udGFrZUtleWJvYXJkKCk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICBpZiAoIXRoaXMuc3RhdGUub3BlbmVkKSByZXR1cm47XG4gICAgaWYgKHRoaXMucHJvcHMub25XaWxsQ2xvc2UpIHRoaXMucHJvcHMub25XaWxsQ2xvc2UoKTtcbiAgICB0aGlzLnNldFN0YXRlKHtvcGVuZWQ6IGZhbHNlfSk7XG4gICAgdGhpcy5fbWVudUl0ZW0ucmVsZWFzZUtleWJvYXJkKCk7XG4gICAgdGhpcy5fbWVudUl0ZW0udW5sb2NrSGlnaGxpZ2h0KCk7XG4gIH1cblxuICB0b2dnbGUoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUub3BlbmVkKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cbiAgfVxuXG4gIHJlcG9zaXRpb24oKSB7XG4gICAgdGhpcy5fZmxvYXRBbmNob3IucmVwb3NpdGlvbigpO1xuICB9XG5cbiAgaGFzSGlnaGxpZ2h0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tZW51SXRlbS5oYXNIaWdobGlnaHQoKTtcbiAgfVxuXG4gIGhpZ2hsaWdodChieUtleWJvYXJkOiBib29sZWFuPXRydWUpIHtcbiAgICB0aGlzLl9tZW51SXRlbS5oaWdobGlnaHQoYnlLZXlib2FyZCk7XG4gIH1cblxuICB1bmhpZ2hsaWdodCgpIHtcbiAgICB0aGlzLl9tZW51SXRlbS51bmhpZ2hsaWdodCgpO1xuICB9XG5cbiAgbW92ZUN1cnNvcihkaXJlY3Rpb246IERpcmVjdGlvbiwgcHJldkN1cnNvckxvY2F0aW9uOiA/UmVjdCkge1xuICAgIHRoaXMuX21lbnVJdGVtLm1vdmVDdXJzb3IoZGlyZWN0aW9uLCBwcmV2Q3Vyc29yTG9jYXRpb24pO1xuICB9XG5cbiAgX29uSGlnaGxpZ2h0Q2hhbmdlKGhpZ2hsaWdodGVkOiBib29sZWFuLCBldmVudDogT2JqZWN0KSB7XG4gICAgdGhpcy5fcmVzZXRNb3VzZUxlYXZlV2F0Y2hlci5lbWl0KG51bGwpO1xuXG4gICAgaWYgKGhpZ2hsaWdodGVkICYmICFldmVudC5ieUtleWJvYXJkKSB7XG4gICAgICBjb25zdCBPUEVOX0RFTEFZID0gMjAwO1xuXG4gICAgICBLZWZpci5sYXRlcihPUEVOX0RFTEFZKVxuICAgICAgICAudGFrZVVudGlsQnkodGhpcy5fcmVzZXRNb3VzZUxlYXZlV2F0Y2hlcilcbiAgICAgICAgLnRha2VVbnRpbEJ5KHRoaXMuX3N0b3BwZXIpXG4gICAgICAgIC5vblZhbHVlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICghaGlnaGxpZ2h0ZWQpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBfb25Nb3VzZUxlYXZlSXRlbShldmVudDogT2JqZWN0KSB7XG4gICAgaWYgKCF0aGlzLnN0YXRlLm9wZW5lZCkge1xuICAgICAgdGhpcy5fbWVudUl0ZW0udW5oaWdobGlnaHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgbW91c2UgaXNuJ3QgZ29pbmcgdG93YXJkIHRoZSBtZW51LCB0aGVuIHVuaGlnaGxpZ2h0IG91cnNlbGYuXG5cbiAgICBjb25zdCBtZW51UmVjdCA9IHRoaXMuX21lbnVDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHN0YXJ0WCA9IGV2ZW50LnBhZ2VYLCBzdGFydFkgPSBldmVudC5wYWdlWTtcblxuICAgIGZ1bmN0aW9uIGdldERpc3RhbmNlKHgsIHkpIHtcbiAgICAgIHJldHVybiBwb2ludFJlY3REaXN0YW5jZSh4LCB5LCBtZW51UmVjdC5sZWZ0LCBtZW51UmVjdC50b3AsIG1lbnVSZWN0LnJpZ2h0LW1lbnVSZWN0LndpZHRoLCBtZW51UmVjdC5ib3R0b20tbWVudVJlY3QudG9wKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydERpc3RhbmNlID0gZ2V0RGlzdGFuY2Uoc3RhcnRYLCBzdGFydFkpO1xuICAgIGxldCBsYXN0Q29vcmRzID0ge3BhZ2VYOiBzdGFydFgsIHBhZ2VZOiBzdGFydFl9O1xuXG4gICAgLy8gcGl4ZWxzIHBlciBzZWNvbmQgdGhlIHVzZXIgbXVzdCBiZSBtb3ZpbmcgdGhlIG1vdXNlIHRvd2FyZCB0aGUgbWVudSBmb3JcbiAgICAvLyB0aGUgbWVudSB0byBzdGF5IG9wZW4uXG4gICAgY29uc3QgTUlOX1NQRUVEID0gNjA7XG5cbiAgICAvLyBtcyBiZWZvcmUgdGhlIG1lbnUgd2lsbCBjbG9zZSBpZiB0aGUgdXNlciBoYXNuJ3QgcmVhY2hlZCBpdCB5ZXQsIG5vXG4gICAgLy8gbWF0dGVyIGhvdyB0aGV5J3JlIG1vdmluZyB0aGUgY3Vyc29yIHRvd2FyZCBpdC5cbiAgICBjb25zdCBNQVhfVElNRSA9IDc1MDtcblxuICAgIC8vIG1zIHRvIG9mZnNldCBzdGFydCB0aW1lLCB0byBzZXQgbWF4RGlzdGFuY2UgYmFjayBhIGxpdHRsZSBzbyBpdCdzIG5vdCBzb1xuICAgIC8vIHVuZm9yZ2l2aW5nIGF0IHRoZSB2ZXJ5IHN0YXJ0LlxuICAgIGNvbnN0IExFQURfVElNRSA9IDUwO1xuXG4gICAgLy8gTGlzdGVuIHRvIG1vdXNlIG1vdmVzLCBmaW5kIHRoZSBmaXJzdCBldmVudCBub3QgZ29pbmcgdG93YXJkcyB0aGUgbWVudSxcbiAgICAvLyBhbmQgZW5kIGl0IHRoZXJlLiBPciBlbmQgYWZ0ZXIgYSB0aW1lci5cbiAgICBLZWZpci5mcm9tRXZlbnRzKHdpbmRvdywgJ21vdXNlbW92ZScpXG4gICAgICAuYnVmZmVyQnkoS2VmaXIuaW50ZXJ2YWwoNjAsIG51bGwpKVxuICAgICAgLm1hcChldmVudHMgPT4ge1xuICAgICAgICBpZiAoZXZlbnRzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IGxhc3QgPSBldmVudHNbZXZlbnRzLmxlbmd0aC0xXTtcbiAgICAgICAgICBsYXN0Q29vcmRzID0ge3BhZ2VYOiBsYXN0LnBhZ2VYLCBwYWdlWTogbGFzdC5wYWdlWX07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxhc3RDb29yZHM7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoe3BhZ2VYLCBwYWdlWX0pID0+IHtcbiAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBnZXREaXN0YW5jZShwYWdlWCwgcGFnZVkpO1xuICAgICAgICBjb25zdCBtYXhEaXN0YW5jZSA9IHN0YXJ0RGlzdGFuY2UgLSAoRGF0ZS5ub3coKS1zdGFydFRpbWUtTEVBRF9USU1FKS8xMDAwICogTUlOX1NQRUVEO1xuICAgICAgICByZXR1cm4gZGlzdGFuY2UgPiBtYXhEaXN0YW5jZTtcbiAgICAgIH0pXG4gICAgICAubWVyZ2UoS2VmaXIubGF0ZXIoTUFYX1RJTUUqMTAwMCkpXG4gICAgICAudGFrZSgxKVxuICAgICAgLnRha2VVbnRpbEJ5KHRoaXMuX3Jlc2V0TW91c2VMZWF2ZVdhdGNoZXIpXG4gICAgICAudGFrZVVudGlsQnkodGhpcy5fc3RvcHBlcilcbiAgICAgIC5vblZhbHVlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB0aGlzLl9tZW51SXRlbS51bmhpZ2hsaWdodCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBfbW91c2VFbnRlck1lbnUoKSB7XG4gICAgdGhpcy5fcmVzZXRNb3VzZUxlYXZlV2F0Y2hlci5lbWl0KG51bGwpO1xuICAgIHRoaXMuX21lbnVJdGVtLnVubG9ja0hpZ2hsaWdodCgpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGluZGV4LCBoaWdobGlnaHRlZFN0eWxlLCBoaWdobGlnaHRlZENsYXNzTmFtZSxcbiAgICAgIHBvc2l0aW9uT3B0aW9ucywgbWVudVpJbmRleCwgY2hpbGRyZW4sIG1lbnVcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7b3BlbmVkfSA9IHRoaXMuc3RhdGU7XG5cbiAgICBsZXQgc3R5bGUgPSB0aGlzLnByb3BzLnN0eWxlO1xuICAgIGxldCBjbGFzc05hbWUgPSB0aGlzLnByb3BzLmNsYXNzTmFtZTtcbiAgICBpZiAob3BlbmVkKSB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5vcGVuZWRTdHlsZSkge1xuICAgICAgICBzdHlsZSA9IHsuLi5zdHlsZSwgLi4udGhpcy5wcm9wcy5vcGVuZWRTdHlsZX07XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5wcm9wcy5vcGVuZWRDbGFzc05hbWUpIHtcbiAgICAgICAgY2xhc3NOYW1lID0gYCR7Y2xhc3NOYW1lfHwnJ30gJHt0aGlzLnByb3BzLm9wZW5lZENsYXNzTmFtZX1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8RmxvYXRBbmNob3JcbiAgICAgICAgcmVmPXtlbCA9PiB7XG4gICAgICAgICAgaWYgKGVsKSB0aGlzLl9mbG9hdEFuY2hvciA9IGVsO1xuICAgICAgICB9fVxuICAgICAgICBvcHRpb25zPXtwb3NpdGlvbk9wdGlvbnN9XG4gICAgICAgIHpJbmRleD17bWVudVpJbmRleH1cbiAgICAgICAgYW5jaG9yPXtcbiAgICAgICAgICA8TWVudUl0ZW1cbiAgICAgICAgICAgIHJlZj17ZWwgPT4ge1xuICAgICAgICAgICAgICBpZiAoZWwpIHRoaXMuX21lbnVJdGVtID0gZWw7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgICBoaWdobGlnaHRlZFN0eWxlPXtoaWdobGlnaHRlZFN0eWxlfVxuICAgICAgICAgICAgaGlnaGxpZ2h0ZWRDbGFzc05hbWU9e2hpZ2hsaWdodGVkQ2xhc3NOYW1lfVxuICAgICAgICAgICAgb25IaWdobGlnaHRDaGFuZ2U9eyhoLGUpID0+IHRoaXMuX29uSGlnaGxpZ2h0Q2hhbmdlKGgsZSl9XG4gICAgICAgICAgICBvbk1vdXNlTGVhdmU9e2UgPT4gdGhpcy5fb25Nb3VzZUxlYXZlSXRlbShlKX1cbiAgICAgICAgICAgIG9uUmlnaHRQdXNoZWQ9eyhlOiBNZW51RXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLnN0YXRlLm9wZW5lZCkge1xuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuX21lbnVJbnNwZWN0b3IubW92ZUN1cnNvcignZG93bicpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25JdGVtQ2hvc2VuPXsoZTogQ2hvc2VuRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgICAgICAgaWYgKGUuYnlLZXlib2FyZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX21lbnVJbnNwZWN0b3IubW92ZUN1cnNvcignZG93bicpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD17dHJ1ZX1cbiAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9e29wZW5lZH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgPC9NZW51SXRlbT5cbiAgICAgICAgfVxuICAgICAgICBmbG9hdD17XG4gICAgICAgICAgIW9wZW5lZCA/IG51bGwgOlxuICAgICAgICAgICAgPE1lbnVMaXN0SW5zcGVjdG9yXG4gICAgICAgICAgICAgIHJlZj17ZWwgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlbCkgdGhpcy5fbWVudUluc3BlY3RvciA9IGVsO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbkxlZnRQdXNoZWQ9e2UgPT4ge1xuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIHJlZj17ZWwgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGVsKSB0aGlzLl9tZW51Q29udGFpbmVyID0gZWw7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpPT50aGlzLl9tb3VzZUVudGVyTWVudSgpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge21lbnV9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9NZW51TGlzdEluc3BlY3Rvcj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICApO1xuICB9XG59XG4iXX0=
{
"name": "react-menu-list",
"version": "5.0.0",
"version": "5.0.1",
"description": "React component for menu lists and submenus",

@@ -34,4 +34,5 @@ "main": "js/index.js",

"babel-cli": "^6.18.0",
"babel-core": "^6.26.3",
"babel-eslint": "^8.0.1",
"babel-jest": "^21.2.0",
"babel-jest": "^22.4.3",
"babel-plugin-add-module-exports": "^0.2.1",

@@ -44,4 +45,4 @@ "babel-plugin-transform-runtime": "^6.15.0",

"babel-register": "^6.18.0",
"babelify": "^7.2.0",
"browserify": "^14.0.0",
"babelify": "^8.0.0",
"browserify": "^16.2.2",
"browserify-hmr": "^0.3.1",

@@ -52,5 +53,5 @@ "cross-env": "^5.0.1",

"eslint-plugin-react": "^7.4.0",
"flow-bin": "^0.56.0",
"flow-bin": "^0.72.0",
"flow-copy-source": "^1.0.1",
"jest": "^21.2.1",
"jest": "^22.4.3",
"react": "^16.0.0",

@@ -57,0 +58,0 @@ "react-dom": "^16.0.0",

Sorry, the diff of this file is not supported yet

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